C#中如何通过按钮打断循环
我在窗体上设置了两个按钮start与end并设置一个全局变量boolflagstart,本意是想在按下start按钮后事件响应如下:flagstart=true;whil...
我在窗体上设置了两个按钮start与end
并设置一个全局变量bool flagstart,本意是想在按下start按钮后事件响应如下:
flagstart=true;
while(flagstart)
{
///////
}
messagebox.show("结束");
按下end后事件响应如下:
flagstart=false;
但实际情况是一旦进入循环,end按钮根本就按不下。。。这是要开线程么?把end按钮的事件响应放在线程中?具体怎么解决希望说一下,十分感谢! 展开
并设置一个全局变量bool flagstart,本意是想在按下start按钮后事件响应如下:
flagstart=true;
while(flagstart)
{
///////
}
messagebox.show("结束");
按下end后事件响应如下:
flagstart=false;
但实际情况是一旦进入循环,end按钮根本就按不下。。。这是要开线程么?把end按钮的事件响应放在线程中?具体怎么解决希望说一下,十分感谢! 展开
4个回答
展开全部
flagstart=true;
while(flagstart)
{
///////
}
可以写在线程里面,这样才能响应你的点击操作;
如果觉得写线程麻烦的话,可以考虑转换下思路,写在timer里面即可,timer事件是有间隔的,你点击的时候就可以响应了。
private bool flagstart; //定义为全局变量
private void timer1_Tick(object sender, EventArgs e)
{
if (flagstart) {//do something};
}
点击end的时候设置flagstart为false即可。
while(flagstart)
{
///////
}
可以写在线程里面,这样才能响应你的点击操作;
如果觉得写线程麻烦的话,可以考虑转换下思路,写在timer里面即可,timer事件是有间隔的,你点击的时候就可以响应了。
private bool flagstart; //定义为全局变量
private void timer1_Tick(object sender, EventArgs e)
{
if (flagstart) {//do something};
}
点击end的时候设置flagstart为false即可。
展开全部
你可以把循环写到timer控件中,然后通过你那个flagstart去停止它。因为窗体里写的程序在主线程中,所以如果你想达到你所要的情况就必须采取多线程的方式。其实timer也是多线程的一种。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先声明一个循环的方法
可以开一个线程,开始的时候start,结束的时候abort;
也可以用timer设定周期,开始的时候启用,结束的时候禁用
可以开一个线程,开始的时候start,结束的时候abort;
也可以用timer设定周期,开始的时候启用,结束的时候禁用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你的循环写在主线程中,所以界面就会卡死。你应该把循环写到新开线程中,end按钮不需要写在线程中。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询