C# 如何从不同线程编辑Windows窗体控件

C# 如何从不同线程编辑Windows窗体控件,c#,multithreading,winforms,timer,C#,Multithreading,Winforms,Timer,我想做一个c#IRC客户。我的问题是: 我在表单类中声明了一个TextBox,还有一个计时器,它执行OnTimedEvent方法,该方法应该编辑TextBox System.Timers.Timer aTimer = new System.Timers.Timer(); aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent); aTimer.Interval = 500; aTimer.Enabled = true; public vo

我想做一个c#IRC客户。我的问题是: 我在表单类中声明了一个
TextBox
,还有一个计时器,它执行
OnTimedEvent
方法,该方法应该编辑
TextBox

System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Interval = 500;
aTimer.Enabled = true;


public void OnTimedEvent(object source, ElapsedEventArgs e)
{
    string inputLine = reader.ReadLine();
    tab1text.Text = inputLine;
}
我得到一个错误,我要编辑的对象是由另一个线程创建的


读卡器是一个从TCP连接获取数据的
StreamReader

您必须使用它从另一个线程编辑UI。

实际上应该有一个分号:

tab1text.Invoke(new Action(delegate(){ tab1text.Text = inputLine }));
tab1text.Invoke(new Action(delegate(){ tab1text.Text = inputLine; }));