C#中如何通过按钮打断循环

我在窗体上设置了两个按钮start与end
并设置一个全局变量bool flagstart,本意是想在按下start按钮后事件响应如下:
flagstart=true;
while(flagstart)
{
///////
}
messagebox.show("结束");
按下end后事件响应如下:
flagstart=false;

但实际情况是一旦进入循环,end按钮根本就按不下。。。这是要开线程么?把end按钮的事件响应放在线程中?具体怎么解决希望说一下,十分感谢!

flagstart=true;
while(flagstart)
{
///////
}
可以写在线程里面,这样才能响应你的点击操作;
如果觉得写线程麻烦的话,可以考虑转换下思路,写在timer里面即可,timer事件是有间隔的,你点击的时候就可以响应了。
private bool flagstart; //定义为全局变量

private void timer1_Tick(object sender, EventArgs e)
{
if (flagstart) {//do something};
}

点击end的时候设置flagstart为false即可。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-15
你可以把循环写到timer控件中,然后通过你那个flagstart去停止它。因为窗体里写的程序在主线程中,所以如果你想达到你所要的情况就必须采取多线程的方式。其实timer也是多线程的一种。
第2个回答  2013-11-15
首先声明一个循环的方法
可以开一个线程,开始的时候start,结束的时候abort;
也可以用timer设定周期,开始的时候启用,结束的时候禁用
第3个回答  2013-11-15
因为你的循环写在主线程中,所以界面就会卡死。你应该把循环写到新开线程中,end按钮不需要写在线程中。
相似回答