为了阻止我的应用程序闪烁,我尝试为所有控件和子控件激活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)是相同的。