Ситуация:
У меня есть небольшой сервис для выполнения простых заданий по обмену файлами, из которых можно переместить файлы. одну систему в другую и выполните поиск и замену/разархивирование. Служба, написанная на C#, использует FileSystemWatcher для проверки наличия новых файлов в папке.
Код:
Код: Выделить всё
private static void Main(string[] args)
{
try
{
InitializeService();
}
catch (Exception ex)
{
}
fsw = new FileSystemWatcher();
fsw.Path = RootPath;
//Watch only directories
fsw.NotifyFilter = NotifyFilters.DirectoryName;
//Add the event functions
fsw.Created += FileSystemEvent;
//fsw.Changed += FileSystemEvent;
fsw.Error += OnError;
//start the listener
fsw.EnableRaisingEvents = true;
Console.WriteLine("Started with path: " + RootPath);
Console.ReadLine();
}
Путь к средству просмотра файлов находится на другом сервере, поэтому я подключаюсь к общему ресурсу.
Время от времени наблюдатель за файлами теряет соединение с каталогом (проблема с сетью, перезагрузка сервера во время окна обслуживания или что-то еще).
Если это происходит, наблюдатель за файлами не подключается повторно к серверу, не выдает исключение или что-либо еще признак того, что он больше не подключен. Просто ничего не делает!
Вопрос
Можно ли что-нибудь сделать, чтобы проверить, не потерял ли FileWatcher соединение?
Потому что теперь мой обходной путь заключается в том, что я перезапускаю сервер каждую ночь с запланированным заданием, сначала проверяю наличие существующих файлов и затем обрабатываю их. Но я думаю, что это не то, что должно быть идеей, если вы используете средство просмотра файлов.
Большое спасибо
Подробнее здесь: https://stackoverflow.com/questions/321 ... ut-message