вы должны определить defer и вернуть его за пределы вашей асинхронной операции, например:
Используя FileSystemWatcher на другом компьютере кажется слишком легким, чтобы быть верным...
Это отчасти. Базовый API - ReadDirectoryChanges()
- открывает соединение с сервером, который ответственен за ответ, когда что-то изменяется. Если то соединение отбрасывается по некоторым причинам, или Вы увеличиваете против ограничения соединения ОС, с которой Вы соединяетесь, то Вы не получаете уведомления.
Я нашел, что это более надежно для опроса периодически (с некоторым довольно длинным интервалом), и использование FileSystemWatcher
только как способ ответить быстро на изменения промежуточные опросы.
Я думаю, что FileSystemWatcher действительно использует шаблон наблюдателя / заметный шаблон на основе базового Win32 API. Не уверенный в фактических событиях, но по-видимому при инициализации объекта FileSystemWatcher наблюдать сетевой путь и установить свойство EnableRaisingEvents, оно присоединяется негласно к папке как наблюдатель путем присоединения к событиям, сгенерированным API Win32, как они были бы, если папка была на том же компьютере.
В шаблоне разработки The Observer (заметный) предмет никогда не знает о количестве или типах наблюдателя поэтому точка о другом компьютере, знающем, когда FSW больше не смотрит, не важно.
Если сеть понижается во время события, сгенерированного, который является чем-то вроде глюка - кто-то еще должен будет помочь Вам там.