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”在第二个线程中运行这个进度条。在 Win7 上一切正常,正如上面提到的 WinXP(.net4,激活的桌面主题)在进度条显示一次后有 100% 的 cpu 负载 - 而且实际有效负载功能需要更长的时间才能完成 - 可能是因为高 - cpu-load 由进度条完成。我应该在哪里和什么地方再次检查?一些想法?

顺便说一句:我不认为线程有问题,因为当我在主线程中显示表单并且不刷新任何内容时,结果(高 cpu 负载)是一样的......

4

0 回答 0