我有一個漫長的過程,我不能異步運行,所以就像複製文件時的資源管理器一樣,我有一個進度對話框。我以模態方式顯示對話框,然後執行操作(我們將其稱爲複製文件以使其保持抽象),更新進度對話框,並使用Application.DoEvents()抽取消息以保持應用程序主框架繪畫和響應。當模態進度對話框啓動時,可以調用「Application.DoEvents」嗎?
由於對話框是模態的,用戶除了觀看或取消之外無法進行其他操作。換句話說,他們不能選擇一個菜單項或點擊任何按鈕。
我一直認爲Application.DoEvents是非常邪惡的,因爲你可以重新輸入你不打算重入的代碼。但在這種情況下,由於進度對話框是模態的,所以我看不出這是一個糟糕或危險的解決方案。
我可以忽略一些事情,或者正在使用Application.DoEvents來抽取消息來處理模態對話嗎?
爲什麼你不能在後臺線程中運行它?只需使用Background worker,並使用Control.BeginInvoke更新UI。 – BFree
[Some](http://stackoverflow.com/a/5183623/825024)[閱讀](http://stackoverflow.com/a/1115410/825024)。 – Otiel