Один из способов добиться этого - использовать Custom Tracker, который невидим. Например, вы можете определить свой трекер как.
<oxy:PlotView.TrackerDefinitions>
<oxy:TrackerDefinition TrackerKey="InvisibleTracker">
<oxy:TrackerDefinition.TrackerTemplate>
<ControlTemplate>
<TextBlock Text="{Binding}" Visibility="Collapsed"/>
</ControlTemplate>
</oxy:TrackerDefinition.TrackerTemplate>
</oxy:TrackerDefinition>
</oxy:PlotView.TrackerDefinitions>
Обратите внимание, что вы установили видимость TextBlock
как Collapsed
. Теперь вы можете установить TrackerKey для серии, для которой вам нужно скрыть Tracker на «InvisibleTracker». Это гарантирует, что трекер не виден для этих серий.
Вы имеете в виду, что вы ожидаете, когда lastModified
установит время? В лучшем случае это будет немного хитом.
Как насчет попытки открыть файл с правами записи (конечно, добавляя, а не обрезая файл)? Это не удастся, если другой процесс все еще пытается написать в него. Это немного некрасиво, особенно если учесть, что это может быть случай использования исключений для управления потоком (ick), но я думаю, что это сработает.
В прошлом я использовал два подхода, которые не зависят от платформы.
1 / Это было для передачи по FTP, где я контролировал то, что было помещено, так что это не может иметь непосредственного отношения.
По сути, независимо от того, что помещает файл file.txt
, будет, когда он закончится, также поместить небольшой (возможно, нулевой байт) фиктивный файл с именем file.txt.marker
(например).
Таким образом, инструмент мониторинга просто ищет файл маркера, который появляется, и, когда это происходит, он знает, настоящий файл готов. Затем он может обработать реальный файл и удалить маркер.
2 / Неизмененная длительность.
Попросите программу монитора подождать, пока файл не изменится в течение N секунд (где разумно гарантировано, что N будет достаточно большим, чтобы файл закончил ).
Например, если размер файла не изменился за 60 секунд, есть хороший шанс, что он закончен.
Существует баланс между не думанием о том, что файл закончен, просто потому, что на нем нет активности, и ожиданием, когда он закончится, прежде чем вы сможете начать его обработку. , Это меньше проблем для локального копирования, чем для FTP.
и подождите, пока он закончится, прежде чем вы сможете начать его обработку. Это меньше проблем для локального копирования, чем для FTP. и подождите, пока он закончится, прежде чем вы сможете начать его обработку. Это меньше проблем для локального копирования, чем для FTP.Если я правильно понял вопрос, вы ищете способ определить, завершено ли копирование файла или все еще в процессе?
Как насчет сравнения размера исходного и конечного файла (т.е. file.length ())? Если они равны, то копирование завершено. В противном случае, он все еще находится в процессе.
Я не уверен, что он эффективен, так как все равно потребует опроса. Но это может сработать.
Вы можете посмотреть онлайн-загрузку файлов с помощью техник выполнения - они используют OutputStreamListener и пользовательский модуль записи, чтобы уведомить слушателя о записанных байтах .
http://www.missiondata.com/blog/java/28/file-upload-progress-with-ajax-and-java-and-prototype/