【发布时间】:2013-05-15 19:39:19
【问题描述】:
我有一个无限循环:-
while(true)
{
//display an image
}
显然 CPU 上升了。
我用过:
Thread.Sleep(100);
Thread.Sleep(0);
ApplicationDoEvents() - I know i shouldn't
除非应用程序结束,否则此循环将永远不会结束。它们是无限循环的其他替代方案吗?
我正在用户控件中显示图像,并且我正在覆盖 OnPaint 事件...
if (CurrentFrame != null)
{
g.DrawImageUnscaled(CurrentFrame, 0,0);
}
public void NewFrame(Image _currentFrame)
{
if (CurrentFrame != null)
{
CurrentFrame.Dispose();
}
CurrentFrame = _currentFrame;
Invalidate();
//Update();
}
欢迎任何见解/建议/建议...
【问题讨论】:
-
您使用的是什么窗口工具包?绘图通常应该由窗口工具包调用(反过来由窗口系统调用)
-
嗨,只是为了确认我对乔纳森的评论。我目前正在覆盖用户控件中的 onpaint 事件,并且我正在通过 onpaint 对象提供的图形对象绘制位图对象。我应该解释得更好一点,但我专注于无限循环
-
我的重点是无限循环以及我可以采用的不同策略来代替它。我正在使用 c#。我应该在我原来的问题中说明这一点。显然,我通过无限循环“启动”的内容与 CPU 使用率有关,但无论我是否“启动”任何代码,我都会遇到 CPU 问题。
-
你让我了解我是如何渲染我的图形以及在什么环境下渲染的,这是非常正确的。我的错真的我应该更好地详细说明我目前在做什么。不过真的很感谢你的时间。
-
你能详细说明为什么你需要那个循环吗?
标签: c# timer schedule long-running-processes