1

アプリケーションがちらつくのを防ぐために、すべてのコントロールとサブコントロールに対して 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負荷が高い)は同じであるため、スレッドに問題はないと思います...

4

0 に答える 0