2012-06-01 14 views
0

我有什麼似乎是一個簡單的問題,但我不知道如何解決它。如何使用BeginInvoke或類似的工具在UI線程上執行一個串行動作

我想要做的是執行從工作線程上的UI線程調用的冗長操作,以便UI保持響應 - 但是這仍然必須是順序的,我想等待操作完成但仍然泵消息隊列,所以用戶界面不會得到可怕的(不響應...)錯誤。

它是如何以優雅的方式,醜陋的和惡魔般的方式將產生一個線程並輸入一個DoEvents循環,直到它完成。

+2

請在此添加語言分類。 – Gray

回答

0

你所要求的是矛盾的。您希望UI執行(具有響應性),但您不希望它執行您的代碼(等待操作完成)。

您可以顯示阻止用戶與主界面交互的模式視覺元素,也可以在後臺任務完成時禁用所有視覺元素(以及相關的導航)。

+0

嗯,我真正想要的是爲UI不凍結,我希望它仍然繪畫,以在動作完成時顯示沙漏,我實際上不希望用戶能夠與UI交互,而不是移動窗口 – user1371314

+0

它繪製在UI線程上,但它也處理UI線程上的點擊。所以你想過濾掉一切,但在UI線程上繪製。我在回答的第二部分提出了兩個簡單的方法來做到這一點。 – Slugart

相關問題