トレーダーが現在並行して実行している古い(Win32)バージョンと新しい(WPF)バージョンのブロッターソフトウェアがあります。ただし、WPFアプリケーションを実行すると、Win32アプリケーションの再描画速度が大幅に遅くなることがあります。WPF/Win32アプリケーションを並行して実行する際のパフォーマンスの問題?
WPFアプリケーションが実行されていない(または最小化されていない)場合、描画速度は、Win32アプリケーションでは流動的で高速です。 WPFアプリケーションを横に開き、Win32アプリケーションのUI描画速度が著しく低下します。 WPFアプリケーションを実行すると、Win32アプリケーション(グラフィックスが重い)から取り除かれたリソースの使用がトリガーされているようです。
CPUとメモリは飽和状態に近くないため、これらは関連していないようです。解像度を下げたり、表示するモニタの数を減らしたり(ビデオカードのメモリ使用量や帯域幅の負荷を減らす)しても、大きな違いはありません。そのため、グラフィックスハードウェアのパフォーマンスに問題はありません。次のような原因を説明できる
1つの仮説は次のとおりです。ボンネットの下
、我々は知っている基本的にの指示のキューである窓の「メッセージポンプ」にWPFとWin32アプリケーションの出力グラフィックス情報の両方スクリーンに描画するものWPFアプリケーションが実行されていないときに、Win32はこれに対して完全に自由にアクセスでき、画面の更新が流動的であるように見えます。それと並行してWPFアプリケーションを実行すると、このキューに追加のメッセージが配置されるため、Win32アプリケーションは各スクリーン要素の更新を行うために競合する必要があります。したがって、「ポンプを詰まらせる」ことがわかります。
上記の場合は、このような事態を防ぐために、ウィンドウメッセージポンプを管理/制御する方法をお勧めしますか?
フリッカーは、リソースが少なくなったときに表示されるタイプで、個々の要素(フォーム、ラベル)がちらつき、徐々に画面に引き込まれることがわかります。
ご意見やご提案がありましたら、お知らせください。
ありがとうございます、私たちはこれを検討しています。 –
これは直接的な解決策ではありませんでしたが、これは適切な道のり(ハードウェア/ソフトウェアのレンダリングをより綿密に見ている)につながります。ありがとう! –
@Gaurav私はそれがその地域の周りにあると思っていました - 助けになるのはうれしいです。 :) –