在最後幾個小時我一直在努力與代表和訪問Windows窗體,我已經使用本教程控制(C++)(第一個線程安全的方法):http://msdn.microsoft.com/en-us/library/ms171728.aspx#Y190Windows窗體:線程安全訪問GUI?
改變文本框和標籤完美的作品,但是當我想從另一個線程顯示或隱藏整個GUI失敗。
我使用下面梅索德(其是GUI類的一部分):
System::Void UI::showUI(boolean value) {
if (this->InvokeRequired) {
SetTextDelegate^ d = gcnew SetTextDelegate(this, &UI::showUI);
this->Invoke(d, gcnew array<Object^> { value });
} else {
if (value == true)
this->Show();
else
this->Hide();
}
}
在第一呼叫,以便調用被稱爲if-子句爲真。但是通常showUI方法應該在if-子句返回false時自動調用,但這不會發生。所以GUI既沒有顯示也沒有隱藏。
是否需要使用委託來顯示/隱藏GUI,或者我可以從每個可能的線程執行該操作嗎?如果需要委託,爲什麼showUI不能再次執行?
感謝, 馬丁
編輯:好的名字SetTextDelegate是不恰當的,但是這並不是問題的關鍵...
啊就這麼簡單!非常感謝,我明天會更改它(下午11:30)... – martin
完美無缺 - 謝謝! – martin