我正在玩构建C#app,在C#中真的很新。我想做的是;让应用程序定期读取文本文件的内容(仅限一个或两个单词)。文本文件的内容将由其他方式处理,因此没有问题。我在System.Windows.Forms.Label()的Text上显示内容。现在,它适用于Click或HandleCreated事件。但我希望它能够自动读取并显示每个内容,比如2分钟。
答案 0 :(得分:3)
创建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 :(得分:1)
在另一个答案中提到的计时器事件中,我希望您每次都要读取该文件,即使某些其他进程当前正在锁定该文件。
但是,如果您不采取预防措施,您将在文件使用时收到异常。当然,您可以捕获此异常,但是您需要等待几秒钟才能再次尝试。如果文件仍然被锁定,则可能需要实现一些超时机制。
如果这不是您想要的,另一种支持读取(可能)锁定文件的方法是使用使用FileShare.ReadWrite参数创建的FileStream对象:
// 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
}