Dot-Net
如何在後台執行緒執行時阻止 Winforms UI
我繼承了一個 Winforms 應用程序,該應用程序從 UI 執行緒對應用程序伺服器執行大量長時間執行的呼叫,因此 UI 在相當長的一段時間內保持無響應、無法使用、無法關閉。(這讓我真的去AAAAAAAAAARGH!)
我計劃將伺服器呼叫移動到後台執行緒並禁用 UI - 但可移動和可關閉 - 而後台執行緒執行其工作。
那麼禁止使用者輸入我的應用程序的最佳方法是什麼?我正在考慮“模態進度對話框”的構想,但我更喜歡一種不會強迫我將視覺效果扔給使用者的解決方案(某些伺服器操作在不到 500 毫秒內執行,因此對話框不是最佳的…)
Winforms 中是否有任何方法可以防止使用者啟動操作或更改應用程序中的數據,同時允許一些選擇的內容(調整大小、顯示、隱藏和家庭以及使用者關閉視窗)?我更喜歡一種不會讓我訪問表單中的每個 UI 元素並將其設置為禁用的方式……其中有很多,並且該應用程序確實有一個“在 UI 設計器中被黑客入侵,直到它顯示華麗的東西" 原始碼風格。在發布日期之前,無法重構所有有味道的東西……
哦,順便說一句,這個應用程序存在於 .net framework 2
我知道的唯一方法是禁用某些/所有控制項。但是,根據控制項的佈局方式,沒有必要將每個控制項都設置為禁用 - 當容器控制項被禁用時,它的所有子控制項也會被禁用。例如,如果您有
GroupBox一些控制項,如果您將其設置GroupBox為禁用,則其中的所有控制項GroupBox也將被禁用。
選擇一些上層容器控制項(可能是表單本身),並將其 Enabled 屬性設置為 false。放置在該控制項上的所有控制項都將被禁用,這將阻止它們接收輸入。