FileSystemWatcher - событие не запускается второй раз

У меня есть приложение, которое запускает другие приложения, а затем ожидает, пока они создадут определенный файл данных (оно наблюдает за одним приложением за раз). Каждый раз, когда приложение запускается, оно наблюдает за определенным каталогом для создания определенного файла. Для этого я использую FileSystemWatcher (установите его в каталог, а затем отфильтруйте правильное имя файла). Это отлично работает в первый раз (всегда), но второе запущенное приложение никогда не запускает событие. Единственный способ вызвать событие - это если я помещаю точку останова в обработчике событий или если у меня есть команда Thread.Sleep в обработчике событий. Мне это кажется очень странным ... есть ли какое-то состояние гонки, о котором я не знаю? Вот код. Обратите внимание, что у меня есть Thread.Sleep (500). С этой строкой код работает каждый раз. Без этого не получится. Мне действительно неудобно полагаться на команду сна. Я не уверен, при каком условии это тоже не сработает.

    public static void watchFiles(string path)
    {
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = path;
        watcher.Created += new FileSystemEventHandler(watcher_Handler);
        watcher.EnableRaisingEvents = true;
   }

    public static void watcher_Handler(object sender, FileSystemEventArgs e)
    {
        //Hack - the sleep allows the second and third application to be caught by this event
        Thread.Sleep(500);

        switch (e.ChangeType.ToString())
        {
            case "Changed":
                break;
            case "Deleted":
                break;
            case "Created":
                if (e.Name == "log.dat")
                {
                    parseDataFile();
                    moveHTMLtoLMS();

                }
                break;
            default:
                break;
        }
    }

Кто-нибудь знает, почему мне нужен этот спящий режим (или точка останова), чтобы код работал во второй раз?

7
задан cwo 27 December 2010 в 20:18
поделиться