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

私は読者がTCP接続からデータを取得StreamReaderある

..私は編集したいオブジェクトが、別のスレッドによって作成されたことをエラーが発生します。

答えて

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

別のスレッドからUIを編集するには、Invokeを使用する必要があります。

+0

病気はそれを試してみてください、ありがとう! –

1

実際にセミコロンがあるはずです:

tab1text.Invoke(new Action(delegate(){ tab1text.Text = inputLine; })); 
関連する問題