我正在寫一個小聊天應用,和我有這樣的事件處理程序:C#,事件處理程序和線程
void o_Typing(object sender, EventArgs e)
{
MessageBox.Show("Fired!");
this.Text = "Fired!";
}
o_Typing
是從TabPage
派生的類的方法。基本上,我希望每個對話都有自己的選項卡。
事件處理程序由我的Chat對象觸發,該對象在另一個線程中運行。我有1個用戶界面線程,另一個線程用於每個聊天對話(以保持輪詢服務器的新數據)
當事件被觸發時,彈出MessageBox
,但Tab標題不會改變。事件觸發一次後,它再也不會觸發,這讓我相信這個事件在工作線程中被調用,儘管它在UI線程中定義。
如何讓我的事件從工作線程調用,並使用Invoke()
讓它們在UI線程上執行?
感謝您的答案,請參閱我的編輯。 – 2009-07-01 06:22:34
你不知道。您可以在工作線程上調用該事件,並且每個訂閱服務器應檢查它是否在正確的線程上,並在需要時調用本身。 – 2009-07-01 06:24:14