```如何在外部终止for循环~~进来有分``
如果有一个循环````
怎样在外部用一个按钮或是什么````使循环结束啊~~
------解决方案--------------------这个循环必须是在两个不同的线程中才可以
------解决方案--------------------貌似要用线程
------解决方案--------------------bool endFor = false;
for(....)
{
if (endFor == true)
{
break;
}
}
buttonX_click(...)
{
endFor = true;
}
------解决方案--------------------设置个bool变量,循环中判断这个变量再执行循环,想停止循环的时候只要改变这个bool值就行
------解决方案--------------------楼上正解!就像执行一个循环时提供一个取消按钮供用户终止操作
------解决方案--------------------for(....)
{
//
}
Lable1:
.......
buttonX_click(...)
{
goto Lable1
}
------解决方案--------------------定义一个变量,赋个初值,循环根据是否等于这个初值而判断循环,点击按钮时改变这个初值,
其中要注意循环中要加缓冲,要不然很容易死.
------解决方案--------------------你的循环
private void ThreadTask()
{
while (true)
{
//
System.Threading.Thread.Sleep(10);
}
开始循环的地方
System.Threading.Thread trd = new System.Threading.Thread(new System.Threading.ThreadStart(this.ThreadTask));
trd.IsBackground = true;
trd.Start();
要技术循环时
trd.Stop();
------解决方案--------------------是需要两个线程;一个个bool变量isContinue;
后台线程执行for循环;
{
for(;isContinue==true;){}
}
在前台,比如点击按钮{isContinue=false;}
------解决方案--------------------HOHO~那么也可以使用委托来定义一个带有返回值的函数,用委托函数的返回值来判断循环是否继续。
------解决方案--------------------public void Start()
{
ForLoop = new Thread(new ThreadStart(LoopControlThread)); // 定义一个新线程
IsContinue = true; // 定义标志
ForLoop.IsBackground = true; // 后台运行
ForLoop.Start(); // 开始咯
}
public void ClickToStop()
{
IsContinue = false;
}
private static IsContinue = true;
private Thread ForLoop;
private void LoopControlThread()
{
for(;IsContinue;) Thread.Sleep(100);
}
------解决方案--------------------多线程,就如同我们监听一个按钮事件一样!
thread1 for 循环
thread2 就用来设置条件!
for(int i = 0; (i < cout) && IsStop;i++)
{}
Thread2.Start(new ThreadStart(SetBool));
Thread.Sleep(500);
void SetBool()
{
IsStop = true;
}
------解决方案--------------------肯定是多线程了
让你的循环在另一个线程中执行
------解决方案--------------------bool endFor = false;
for(....)
{
if (endFor == true)
{
break;
}
}
buttonX_click(...)
{
endFor = true;
}
---------------------
PS:欣赏你的思路,比较强悍!
---------------------
------解决方案--------------------刚才没写误按提交了.
private bool p=false;
private void a()