Периодически читать содержимое текстового файла в приложении C # - PullRequest
1 голос
/ 01 августа 2010

Я играю с созданием приложения на C #, действительно нового в C #. То, что я пытаюсь сделать, это; заставлять приложение периодически читать содержимое текстового файла (только одним или двумя словами). Содержание текстового файла будет обрабатываться другим способом, так что никаких проблем по этому поводу. Я отображаю содержимое в тексте System.Windows.Forms.Label (). Прямо сейчас, это работает на событии Click или HandleCreated. Но я хочу, чтобы он автоматически читал и отображал содержимое, скажем, каждые 2 минуты.

Я смотрел на это и это , но не совсем уверен, как реализовать это в моем случае. Кто-нибудь может помочь? Спасибо!

Ответы [ 2 ]

3 голосов
/ 01 августа 2010

Создайте System.Forms.Timer , установите интервал в 2 минуты и обработайте событие отметки таймера.

   // Declare at form class scope
   System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer();

   // ...

   myTimer.Tick += new EventHandler(TimerEventProcessor);

   // Sets the timer interval to 120 seconds (2 minutes).
   myTimer.Interval = 120000;
   myTimer.Start();

Выполните вызовы методов для чтения файла и отображенияэто в TimerEventProcessor.

1 голос
/ 01 августа 2010

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

Но если вы не будете принимать меры предосторожности, вы получите исключение, когда файл используется.Конечно, вы можете поймать это исключение, но вам нужно будет просто подождать несколько секунд, прежде чем пытаться снова.Если файл все еще заблокирован, вам может потребоваться реализовать некоторый механизм тайм-аута.

Если это не то, что вам нужно, другой подход, который поддерживает чтение (возможно) заблокированных файлов, заключается в использовании FileStream объект, созданный с параметром FileShare.ReadWrite:

        // Inside your timer event.
        using (System.IO.FileStream fs = new System.IO.FileStream("yourfile.log", 
               System.IO.FileMode.Open, System.IO.FileAccess.Read, 
               System.IO.FileShare.ReadWrite))
        {
            // use fs to read from file as required
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...