一个全局变量两个button.bool go = true;//是否循环开关
//点击button1开始while循环
private void button1_Click(object sender, EventArgs e)
{
while (go)
{
//to do anything
}
}
//点击button2将开关置为false停止循环
private void button2_Click(object sender, EventArgs e)
{
go = false;
}
就是点击了按钮1开始无限循环,希望点击按钮2可以将循环终止,上面的代码不可行,求教!
//点击button1开始while循环
private void button1_Click(object sender, EventArgs e)
{
while (go)
{
//to do anything
}
}
//点击button2将开关置为false停止循环
private void button2_Click(object sender, EventArgs e)
{
go = false;
}
就是点击了按钮1开始无限循环,希望点击按钮2可以将循环终止,上面的代码不可行,求教!
while (true)
{
if(go)
{
//to do anything
}
else
{break;}
}
按button1开始,按button2结束按button1开始,按button2结束按button1开始,按button2结束如此这样
{
public Form1()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false;
} bool go = true;//是否循环开关
Thread thread;
private void button1_Click(object sender, EventArgs e)
{
//点击button1开始while循环
thread = new Thread(new ThreadStart(function));
thread.Start();
}
private void button2_Click(object sender, EventArgs e)
{
//点击button2将开关置为false停止循环
thread.Abort();
} //定义方法
void function()
{
while (go)
{
//to do anything
}
}
}
{
go = true;
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while (go)
{
...
}
}
private void button2_Click(object sender, EventArgs e)
{
go = false;
}
1、跳出循环。跳出循环当下次再启动循环的时候需要记住上次跳出的位置,循环从上次跳出去的地方继续执行。
2、使执行循环的线程停止下来,可以考虑使用AutoRestEvent或者ManualRestEvent。
{
//to do anything
if (go == false) { break; }
}