我有一個Windows窗體,其中有一個按鈕。我有2個線程,我想從另一個線程更改按鈕名稱。我這樣做的時候會出錯。 我該如何更改按鈕名稱?從不同的線程C訪問組件#
P.S.我知道alredy發佈了同樣的問題,但那裏的解決方案不能幫助我。我不能使用Dispatcher
,也許是因爲我使用.NET 2.0(我必須......)。
我有一個Windows窗體,其中有一個按鈕。我有2個線程,我想從另一個線程更改按鈕名稱。我這樣做的時候會出錯。 我該如何更改按鈕名稱?從不同的線程C訪問組件#
P.S.我知道alredy發佈了同樣的問題,但那裏的解決方案不能幫助我。我不能使用Dispatcher
,也許是因爲我使用.NET 2.0(我必須......)。
delegate void MyDelegate(string x);
void ChangeName(string name)
{
if (this.InvokeRequired)
{
this.Invoke(new MyDelegate(this.ChangeName), new object[]{name});
return;
}
this.button.Text = name;
}
你需要看看:
InvokeRequired and
Invoke
方法的實際控制權。 InvokeRequired會告訴你是否需要通過調用來完成這些工作(即從一個不是UIThread的線程調用它),並且調用將執行該操作。
它與調度程序沒有什麼不同,除了責任落在控制本身而不是其他類之外。
我this.InvokeRequired是真實的,但我仍然無法激活invoke方法的詳細信息... – aharon 2011-06-06 13:21:01
的invoke再次調用GUI線程的方法。你試過這個嗎? – madmik3 2011-06-06 13:41:10
在我宣佈委託後,它確實......坦克! – aharon 2011-06-06 13:44:50