我有一個難題。我已經「繼承了」一個非常糟糕的設計和非常複雜的系統,我正在逐步進行現代化和重建(和我的團隊一起)。問題在於目前的系統依賴於200多個用戶,並且由於(缺少)設計,他們在性能方面存在重大問題。目前最棘手的問題是大量的工作被放置在UI線程上,導致GUI掛起,直到線程被清除並且消息泵送可以繼續。這些工作中的大部分確實需要在GUI線程上,因爲它正在更新網格中的大量字段,因爲其他線程上的其他計算結果。UI調度緩衝?
問題是:我沒有資源致力於重寫這裏涉及的線程模型和底層類,而且這項工作的複雜性會帶來顯着的風險,這是我的客戶無法接受的。
我想知道是否有人對如何使UI更高性能有任何建議,而不會干擾currnet線程模型。
我最初的想法是,可能有某種方法可以在實際調用UI線程之前放置一個「緩衝區」,以確保GUI不會被重載,或者它確實能夠退出調度到它。
任何建議將不勝感激。
我知道這一切都不是理想的,但我們是我們的地方,我真的希望在爲期一年的重寫完成之前爲我的用戶提供更好的體驗!
謝謝!
更新#1 這是一個winforms應用程序...對不起,這一開始並不清楚。新代碼是WPF,但這些模塊是winforms。
更新#2 我想我可以嘗試改變大多數的BeginInvoke調用UI線程調用,引進了系列化,希望能提高用戶界面的響應。 任何人都可以預見的任何(不明顯的)缺點?
使異步調用同步正在有效地回到單線程方法。調用阻塞調用線程,直到UI線程更新,所以你不會獲得任何東西。 (當然,如果所有invoke調用都來自UI線程,那麼也不會丟失任何東西。) – 2011-05-02 22:02:44