使用WS_EX_COMPOSITED激活双缓冲时的100%CPU负载

时间:2012-06-05 10:26:17

标签: c#-4.0 cpu-usage doublebuffered

为了阻止我的应用程序闪烁,我尝试为所有控件和子控件激活DoubleBuffering。

为实现这一目标,我在mainform中添加了以下代码片段:

protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x02000000; //WS_EX_COMPOS

            return cp;
        }
    }

问题是,使用WindowsXP,cpu-load几乎达到了100%并保持不变。在Windows7上没问题。

它找我,因为它与此question中的问题完全相同。有没有"容易" C#中的解决方案?或以不同的方式询问 - >什么通常会导致这种行为?所以我可以在我的申请中找出问题。

更新:也许更多信息可以帮助大家帮助我。我想要做的是使用进度条在主窗体的顶部显示半透明的形状。这个" progressBarForm"是在第二个线程中运行此进度条。在Win7上一切正常,如上面提到的WinXP(.net4,激活的桌面主题),在进度条显示一次之后有100%的cpu-load也是真正的有效负载功能需要更长的时间来完成 - 也许是因为由进度条完成的cpu-load。在哪里以及我应该再次检查什么?一些想法?

Btw:我不认为线程是个问题,因为当我在主线程中显示表单并且不刷新任何内容时,结果(高cpu-load)是相同的。

0 个答案:

没有答案