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