難問があります。私は非常にひどく設計された非常に複雑なシステムを「継承」しており、それを(チームとともに)1つずつ近代化および再構築しています。問題は、現在のシステムが200人以上のユーザーに依存しており、設計(の欠如)が原因でパフォーマンスに大きな問題が発生していることです。現時点で最も問題となる問題は、UIスレッドにかなりの量の作業が行われていることです。これにより、スレッドがクリアされるまでGUIがハングし、メッセージのポンピングを続行できます。他のスレッドでの他の計算結果のためにグリッド内の多数のフィールドを更新しているため、この作業の多くは実際にはGUIスレッドで行う必要があります。
問題はこれです:ここに含まれるスレッドモデルと基礎となるクラスを書き直すことに専念するためのリソースがありません。その作業の複雑さは、クライアントに受け入れられない重大なリスクをもたらします。
currnetスレッドモデルにあまり干渉せずに、UIのパフォーマンスを向上させる方法について誰かが提案を持っているかどうかを知りたいと思いました。
私の最初の考えは、GUIが過負荷にならないようにするため、またはGUIへのディスパッチをバックオフするときに、UIスレッドへの実際の呼び出しの前に「バッファー」を配置する方法があるかもしれないということです。
任意の提案をいただければ幸いです。
これが理想的ではないことはわかっていますが、私たちは今いる場所にいます。1年間の書き直しが完了する前に、ユーザーにより良いエクスペリエンスを提供したいと思っています。
ありがとう!
アップデート#1 これはwinformsアプリです...申し訳ありませんが、これは最初は明確ではありませんでした。新しいコードはWPFですが、これらのモジュールはWinFormsです。
アップデート#2 最初は、UIスレッドへのほとんどのBeginInvoke呼び出しをInvokeに変更して、UIの応答性を向上させるシリアル化を導入しようと考えています。ここで、誰もが予測できる(明らかではない)欠点はありますか?