アプリケーションがちらつくのを防ぐために、すべてのコントロールとサブコントロールに対して DoubleBuffering を有効にしようとしました。
これを実現するために、メインフォームに次のコードスニペットを追加しました。
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; //WS_EX_COMPOS
return cp;
}
}
問題は、WindowsXP では CPU 負荷がほぼ 100% になり、維持されることです。Windows7では問題ありません。
この質問とまったく同じ問題であるため、私を探します。C# に「簡単な」ソリューションはありますか? または別の方法で尋ねます -> 通常、この動作の原因は何ですか? したがって、アプリケーションの問題を見つけることができます。
更新:たぶん、皆さんが私を助けるのに役立つ情報がいくつかあります. 私がやろうとしているのは、メインフォームの上に半透明のフォームをプログレスバーで表示することです。この「progressBarForm」は、このプログレスバーを実行するための 2 番目のスレッドにあります。Win7 では、上記の WinXP (.net4、有効化されたデスクトップテーマ) で述べたように、プログレスバーが一度表示された後、100% の CPU 負荷があり、すべて正常に動作します。プログレスバーによって行われたCPU負荷。どこで何をもう一度確認すればよいですか?いくつかのアイデア?
ところで:メインスレッドでフォームを表示し、何も更新しない場合、結果(CPU負荷が高い)は同じであるため、スレッドに問題はないと思います...