C# 中的死循环为什么运行一下后会变成“未响应”?

来源:百度知道 编辑:UC知道 时间:2024/07/05 16:52:42
C# 中的死循环为什么运行一下后会变成“未响应”?
我的代码如下:

private void btnStart_Click(object sender, EventArgs e)
{
int step = 4;
do
{
labMoving.Left += step;
if (labMoving.Left + labMoving.Width >= this.Width || labMoving.Left <= 0)
{
step = -step;
}
labMoving.Refresh();
} while (labMoving.Left > -1000);
}
我就是想点击按钮时标签左右反复移动,可以运行不到几秒,任务管理起重的该进程就会变成“未响应”状态,这是什么原因?
如果我想实现以上的功能,应当如何做?
谢谢大虾指教下……

加一个 Timer 控件. 控件的使用方法到网上看一下.
每隔 一个时间(如200MS),触发一次移动事件.
假设移动区间为[0,1000].
如果标签当前位置小于 0, setp = -step.
如果标签当前位置大于 1000, setp = -step.
其他情况都一直执行移动操作.

你那样写是不对的,程序执行很快,必须给一个间隔.否则程序会一直执行你的事件,而不会响应其他事件,肯定就是"未响应"了.

进程占用CPU时间, 不能处理其他事件

不要在if语句里使用赋值语句

CPU时钟都被占用殆尽,当然未响应
不要在主控线程中运行此死循环就可以。
另外开个线程运行吧