从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#非常陌生,谷歌只是给了我复杂的代码。
问题:"非静态字段、方法或属性需要对象引用。"
Timers.Timer
在次要线程上引发其Elapsed
事件。你不能安全地对UI进行任何更改,例如,在UI线程之外的任何其他线程上设置Text
的TextBox
。如果你将表单本身分配给Timer
的SynchronizingObject
属性,那么它将在UI线程上引发事件,你可以安全地访问你的控件,否则你必须以某种方式委托回UI线程。
也就是说,为什么不使用Windows.Forms.Timer
,它会在Ui线程上引发Tick
事件?