Winforms应用程序在运行此代码时崩溃
本文关键字:代码 崩溃 运行 应用程序 Winforms | 更新日期: 2023-09-27 17:51:01
当我执行以下代码时,应用程序挂起。我做错什么了吗?
注意:即使我没有线程。睡觉,应用程序还在崩溃。事实上,我已经添加了防止它崩溃。
private void start_Click(object sender, EventArgs e)
{
boolValue = true;
while (boolValue)
{
counter++; //Class Variable =0 by default
Thread.Sleep(1000);
lbl.Text = counter.ToString();
}
}
//////////////////////////////////////////////////////////////////////////
private void start_Click(object sender, EventArgs e)
{
boolValue = true;
while (boolValue)
{
counter++; //Class Variable =0 by default
lbl.Text = counter.ToString();
}
}
不会改变boolValue
的值。代码将处于一个无限循环中。如果你想显示计数器的值,你可以使用Timer
类。
private Timer myTimer = new Timer();
private void TimerEventProcessor(Object myObject, EventArgs myEventArgs)
{
lbl.Text = counter.ToString();
counter++;
}
private void start_Click(object sender, EventArgs e)
{
myTimer.Tick += new EventHandler(TimerEventProcessor);
myTimer.Interval = 1000;
myTimer.Start();
}
}
必须在循环的某个地方设置boolValue = false。它是无限循环。
例如:private void start_Click(object sender, EventArgs e)
{
boolValue = true;
while (boolValue)
{
counter++; //Class Variable =0 by default
Thread.Sleep(1000);
lbl.Text = counter.ToString();
if (counter == int.MaxValue)
{
boolValue = false;
}
}
}
一个更好的解决方案是使用定时器组件而不是while()!
如果您想要显示计数器,请参阅@Spark的答案。否则,在循环中添加以下命令,您必须考虑无限循环:
Application.DoEvents();