请问c#如何跳出死循环

有两个按钮一个全局变量booljump=false;第一个按钮事件执行循环while(!jump){//若干语句}想用第二个按钮改变jump的值跳出循环,请问该如何去做,... 有两个按钮
一个全局变量bool jump=false;
第一个按钮事件执行循环
while(!jump)
{
//若干语句
}
想用第二个按钮改变jump的值跳出循环,请问该如何去做,最好有代码例子 谢谢!!
展开
 我来答
风之小A
2011-05-13 · TA获得超过791个赞
知道小有建树答主
回答量:662
采纳率:100%
帮助的人:535万
展开全部
有你这种想法显然是对windows应用程序的机制不太了解所致.
你的想法是好的,通过另一个按钮去触发事件或改变一些标志的值,以通知按钮1执行的循环,让他退出.但实际上的情况是,按下按钮一后由于这两个按钮的事件都处于窗体的主线程之中,程序在没执行完这个循环的时候,没办法做任何其他的事情.所以你根本也没办法点下按钮2.
要实现类似的效果你可以有两种选择.
1 创建一个新的线程.在按钮1按下后激活这个线程.该线程start后就不断执行这个while循环.记住每次循环体里加一个sleep 让线程暂停一下释放cpu使用权.不然cpu马上100%.
在按钮2的点击事件中停止并关闭你刚才新建的线程.
2 创建一个timer定时器.设置其执行频率. 然后在其Tick事件中写你循环体里的内容.在按钮1里启动这个定时器.
这样相当于主线程每隔一段时间会触发timer的tick事件,执行完后还能干别的.这时候你在按钮2的点击事件里就可以停止这个timer.
具体的代码我不写出来.希望你能自己试着写写.因为也没几行代码.实在写不出再说.
更多追问追答
追问
其实我想到也是可能要用多线程,不过我没用过,能否指点一下啊
追答
具体的代码什么的请自行查阅msdn
多线程的写法:
1 在窗体类中定义一个线程Thread类对象.和一个ThreadStart类对象.
2 在窗体类中定义一个动作函数.例如叫Action 里面写这个循环体.
3 在按钮1的触发事件中初始化Thread类对象和ThreadStart对象.将动作函数绑定到线程的委托上去.并启动线程
4 在按钮2的触发事件中停止和关闭Thread对象.
ycsxm
推荐于2016-08-16 · TA获得超过3.3万个赞
知道大有可为答主
回答量:1.4万
采纳率:0%
帮助的人:7956万
展开全部
是什么C语言呀? C++BUILDER我会。
while(!jump)
{
//若干语句
Application->ProcessMessages(); // 处理事件消息,这最关键,VC++要找类似语句
}

第二个按钮
只要令 jump=true;就退出了。
没有消息处理,第二个按钮的动作得不到处理,第一个就不会退出的、
不要什么多线程,不要搞的太复杂!
追问
我用c# 不知道行不行 我去试一下
追答
C# 我记得有类似语句,查一下邦助。
Application.DoEvents();
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小羊说编程
2011-05-13 · 专注编程模式教学,提升大家实战经验
小羊说编程
采纳数:406 获赞数:1394

向TA提问 私信TA
展开全部
可以啊 用线程即可实现这个功能,因为你运行死循环的时候,程序就类似于卡死了,这个时候根本没法去点击什么按钮,所以用到线程。具体怎么做不是一两行代码可以搞定的,所以不贴出来了。
如果确实需要,可以联系本人。可以做一个例子给你!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
桂含蓝
2011-05-15 · TA获得超过506个赞
知道小有建树答主
回答量:655
采纳率:0%
帮助的人:0
展开全部
while(b==true){
…………
if(b==false){
break;
}
这个IF能执行到吗?
public void stop(){
b=false;
}
放到另一个线程肯定可以的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式