从System.Timers.Timer经过的事件处理程序更新文本框

本文关键字:程序 更新 文本 事件处理 System Timers Timer 经过 | 更新日期: 2023-09-27 18:15:37

代码:

private static void OnTimedEvent(object source, ElapsedEventArgs e)
    {
        int count = 0;
        // some code
        count++;
        logOutput.Text += Environment.NewLine + count; //here's the problem
    }

正如标题所说,我想在每次OnTimedEvent被触发时更新文本框,但我对c#非常陌生,谷歌只是给了我复杂的代码。

问题:"非静态字段、方法或属性需要对象引用。"

从System.Timers.Timer经过的事件处理程序更新文本框

Timers.Timer在次要线程上引发其Elapsed事件。你不能安全地对UI进行任何更改,例如,在UI线程之外的任何其他线程上设置TextTextBox。如果你将表单本身分配给TimerSynchronizingObject属性,那么它将在UI线程上引发事件,你可以安全地访问你的控件,否则你必须以某种方式委托回UI线程。

也就是说,为什么不使用Windows.Forms.Timer,它会在Ui线程上引发Tick事件?