【问题标题】:Read content of text file periodically in C# app在 C# 应用程序中定期读取文本文件的内容
【发布时间】:2014-05-26 20:21:19
【问题描述】:

我正在构建 C# 应用程序,这在 C# 中非常新。我想做的是;使应用程序定期读取文本文件的内容(仅用一两个词)。文本文件的内容将通过其他方式处理,因此没有问题。我在 System.Windows.Forms.Label() 的文本上显示内容。现在,它适用于 Click 或 HandleCreated 事件。但我希望它每隔 2 分钟自动读取和显示内容。

我查看了thisthis,但不确定如何在我的案例中实现它。任何人都可以帮忙吗?谢谢!

【问题讨论】:

  • 您可以使用内置计时器或使用线程,创建一个独立的并使用循环作为计时器,如果达到 120 > 打印并重置。

标签: c# windows


【解决方案1】:

创建一个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

【讨论】:

  • 这真的很有帮助。非常感谢!
【解决方案2】:

在另一个答案中提到的计时器事件中,我希望您每次都希望读取文件,即使其他进程当前正在锁定文件。

但是,如果您不采取预防措施,您将在文件正在使用时收到异常。你当然可以捕捉到这个异常,但是你只需要等待几秒钟,然后再试一次。如果文件仍然被锁定,您可能需要实现一些超时机制。

如果这不是您想要的,另一种支持读取(可能)锁定文件的方法是使用使用 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
        }

【讨论】:

  • 这会很有用。谢谢!将尝试实施它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多