Я пытаюсь вызвать событие, когда файл обновляется в C # - PullRequest
0 голосов
/ 17 февраля 2010

я знаю, что этот код не работает, но он хорошо описывает, что я пытаюсь сделать, я хочу запустить код внутри проверки if, когда Lastwritetime больше даты oldvalue.

private void timer1_Tick(object sender, EventArgs e)
{
    DateTime lastWriteTime = File.GetLastWriteTime(@"C:\temp\test_folder\TestFile.txt");

    if (lastWriteTime.ToString() > oldValue.ToString())
    {
        MessageBox.Show("Succsess");
    }
    string oldValue = lastWriteTime.ToString();
}

редактировать: я не использую SystemfileWatcher из-за множественных событий, возникающих при изменении.

Ответы [ 4 ]

12 голосов
/ 17 февраля 2010

Попробуйте взамен FileSystemWatcher .

Прослушивает изменение файловой системы уведомления и вызывает события, когда каталог или файл в каталоге, изменения.

3 голосов
/ 17 февраля 2010

Почему вы сравниваете строковые представления? Если oldValue равно DateTime, просто сравните их как:

if(lastWriteTime.ToString() > oldValue)
    // ...

Кроме того, убедитесь, что область действия oldValue больше области действия timer1_Tick (то есть убедитесь, что это переменная члена класса).

И, конечно же, не изобретайте велосипед: FileSystemWatcher.

1 голос
/ 17 февраля 2010

Рассмотрим класс FileSystemWatcher . Работает довольно хорошо.

Однако следует опасаться, что с ними могут возникнуть проблемы при попытке мониторинга файлов, подключенных к сети, по крайней мере, в .NET 2.0. Мы обнаружили, что они могут потерпеть неудачу, если сетевое соединение было прервано на некоторое время.

0 голосов
/ 17 февраля 2010

Проверьте класс FileSystemWatcher . Он может отслеживать файлы и вызывает событие при их изменении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...