WPFアプリケーションを改善するための最良の解決策を知りたいです。
WPFでは、UIを作成したスレッドですべてのUI作業を実行する必要があることを知っています。これは私にとって大きな問題です。UIが非常に大きく、ウィンドウが1つしかないため、ウィンドウごとに1つのスレッドを分割できないためです。
パンとズームを行うときは、毎回すべてを更新する必要があります。すべてが完了するまで、CPUの1つが100%の使用率に達します。
だから私は私のアプリケーションに何があるかを説明しようとします:
- 1ウィンドウ(画面サイズ)
- 仮想パネル、12000ピクセルX 12000ピクセル(パンとズームを行う場所)
- 約2000のコントロール(ボタン、スイッチ、およびその他の複雑なコントロール)
- コントロールの後ろに、背景用の大きなビットマップがありますが、背景を100個の小さなビットマップのように分割してスタックします(12kピクセル×12kピクセルの1ビットマップがアプリをクラッシュさせるため)
- (ビットマップをフィードする)離れたコンピューターに接続され、50ミリ秒ごとにコンテンツを更新する10個の仮想ディスプレイ
- .NET 4.0、マルチタッチアプリケーション
つまり、パンとズームを実行できるアプリケーション(10個のディスプレイなし)では、コントロールの量に多くのラグがあり、ディスプレイを配置すると、ラグが2倍になります...
私のアプリケーションは約1.5GBの仮想メモリを使用します。
できる限りディスパッチャを使用してスレッドを作成するように検索しましたが、必要なものが見つかりません...どこでも1つのスレッド/ウィンドウについて話していました...しかし、ウィンドウが1つしかないため、どうすればよいかわかりません。
- 小さいウィンドウに分割できません。
- コントロールの量や更新時間を減らすことはできません。
- テクノロジーを変更できません(WPF)
だからここに本当の質問があります:レンダリング時間を助けるためにどこで新しいスレッドを作成できますか?ジョブを別のCPUに分割するには...
私は彼らがこれについて話している別のウェブサイトを見つけました...しかし私の質問に答えていません: