5

我正在运行这样的计时器:

    private void InitializeTimer()
    {
        Timer myTimer = new Timer();
        myTimer.Interval = 3000;
        myTimer.Enabled = true;
        myTimer.Tick += new EventHandler(TimerEventProcessor);
        myTimer.Start();
    }

它将每 3 秒触发一次事件。我认为该事件不是很重,它是从文件中读取文本,将文本长度与文本框中的文本进行比较,如果文本框有更多字符,则会替换框中的文本。

但是计时器的资源量有多大?每 3 秒从文件中读取文本是不是一个坏主意(该文件是纯文本的日志文件)。

4

2 回答 2

6

Timer 是相当轻量级的,尽管它确实取决于您使用的计时器类型。每 3 秒触发一次计时器可能没什么大不了的,但如果您使用的是 Windows 窗体计时器,请确保您的 Tick 事件处理程序没有进行任何重要的处理,因为它发生在 UI 线程中。(例如,使用FileInfo.Length而不是“读取”文件等来检查文件长度)

话虽如此,对于监视日志文件中的更改,FileSystemWatcher可能比使用计时器并不断地重新读取文件要好。除了在文件更改时立即通知您之外,它还可以让您不必不断地阅读文件。

于 2012-07-09T18:34:12.603 回答
0

我认为它会像你制作的TimerEventProcessor处理程序一样重。虽然这FileSystemWatcher似乎是答案,但并非总是如此。我的建议是,在处理此处理程序之前,停止计时器并在处理完代码后重新启动它。

于 2012-07-09T18:46:25.547 回答