2010-12-13 81 views
1

我正在尝试制作一个c#IRC客户端。我的问题: 我有一个TextBox在Form类中声明,并且我有一个执行OnTimedEvent方法的计时器,它应该编辑TextBox如何从不同线程编辑Windows窗体控件

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; 
} 

我得到我想要编辑的对象,被另一个线程创建了一个错误..

的读者是一个StreamReader,从一个TCP连接获取数据。

回答

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

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

+0

生病尝试,谢谢! – 2010-12-13 14:16:13

1

其实应该有一个分号:

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