我有两个函数 - 一个是在我的串行端口上循环运行一些命令,另一个是一个事件处理程序,它应该在第一个方法中停止循环的执行。这是一些示例代码。
public void btm_Processing_Click(object sender, EventArgs e)
{
for (int i = 1; i <= x ; i++)
{
// My processing commands are here .
}
}
这是我的停止按钮事件处理程序。
private void btm_Stop_Click(object sender, EventArgs e)
{
var dialogResult = MessageBox.Show("Do you want to stop processing?",
"Error",
MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
// Here is where I want to break that loop.
}
else
{
// Do other things.
}
}
我不确定我该怎么做。
最佳答案
最好的方法是使用一个 BackgroundWorker 线程来执行你的循环,然后你可以稍后从主线程中取消它。
http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx
更简单的方法是创建一个您设置的全局变量
private volatile bool isWorking = false;
public void btm_Processing_Click(object sender, EventArgs e)
{
isWorking = true;
for (int i = 1; i <= x ; i++)
{
//My Processing Commands are Here
if(!isWorking)
break;
}
}
private void btm_Stop_Click(object sender, EventArgs e)
{
DialogResult dialogResult = MessageBox.Show("Do You Want To Stop Processing ? ", "Error", MessageBoxButtons.YesNo);
isWorking = dialogResult != DialogResult.Yes;
}
关于C# 在另一个函数中打破其他函数循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14226787/