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

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

但实际情况是一旦进入循环,end按钮根本就按不下。。。这是要开线程么?把end按钮的事件响应放在线程中?具体怎么解决希望说一下,十分感谢!
展开
 我来答
xtfnpgy
2013-11-15 · TA获得超过1784个赞
知道大有可为答主
回答量:1989
采纳率:76%
帮助的人:1107万
展开全部
flagstart=true;
while(flagstart)
{
///////
}
可以写在线程里面,这样才能响应你的点击操作;
如果觉得写线程麻烦的话,可以考虑转换下思路,写在timer里面即可,timer事件是有间隔的,你点击的时候就可以响应了。
private bool flagstart; //定义为全局变量

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

点击end的时候设置flagstart为false即可。
yw187142046
2013-11-15 · TA获得超过222个赞
知道小有建树答主
回答量:552
采纳率:100%
帮助的人:436万
展开全部
你可以把循环写到timer控件中,然后通过你那个flagstart去停止它。因为窗体里写的程序在主线程中,所以如果你想达到你所要的情况就必须采取多线程的方式。其实timer也是多线程的一种。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhang399401
2013-11-15 · TA获得超过702个赞
知道小有建树答主
回答量:1347
采纳率:0%
帮助的人:940万
展开全部
首先声明一个循环的方法
可以开一个线程,开始的时候start,结束的时候abort;
也可以用timer设定周期,开始的时候启用,结束的时候禁用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gzxpg
2013-11-15 · TA获得超过232个赞
知道小有建树答主
回答量:838
采纳率:76%
帮助的人:233万
展开全部
因为你的循环写在主线程中,所以界面就会卡死。你应该把循环写到新开线程中,end按钮不需要写在线程中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式