2010-12-13 49 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; }));