2010-08-01 36 views
1

我在C#中构建C#应用程序,真的很新。我想要做的是;使应用程序定期读取文本文件的内容(仅限一个或两个字)。文本文件的内容将由其他意思处理,所以没有问题。我在System.Windows.Forms.Label()的文本上显示内容。现在,它适用于Click或HandleCreated事件。但我希望它能在每2分钟内自动读取和显示内容。定期在C#应用程序中阅读文本文件的内容

我看着thisthis,但不确定如何在我的情况下实现它。任何人都可以帮忙谢谢!

+0

定时器或玩线程,创建一个独立的,并使用循环作为定时器,如果它达到120>打印和重置。 – Survaf93 2014-05-26 12:29:18

回答

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中。

+0

这确实有帮助。非常感谢 ! – 2010-08-01 04:35:53

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 
     } 
+0

这将会很有用。谢谢!将尝试实施它。 – 2010-08-01 04:50:32