在我的应用程序中,我发现需要有无限的 while 循环,主要是为了连续地做一些重复的 Action ,除非另一个事件发生,所以我正在做的是
while(chkFlag)
{
//do something here which takes around 30 seconds
}
然后在其他一些事件中说按下按钮停止我做的循环
chkFlag = false;
现在这可以工作了,但问题是这不会立即停止循环,因为只有在循环完全执行后才会检查 chkFlag。那么谁能告诉我如何根据事件立即退出循环。
最佳答案
“阻塞”代码可能应该移到某种工作线程中(可以终止和/或丢弃结果)。如果使用 BackgroundWorker (推荐,因为这很简单),内置支持处理取消操作。
然后可以将循环移动到 BackgroundWorker 内部,或者 worker 的完成 (RunWorkerCompleted) 事件可以触发下一个 worker 启动(这会导致隐式循环)。
快乐编码。
有更多“积极”的方式来终止/发信号通知线程;但提出这些需要比目前更多的信息。
关于c# - 在 C# 中处理退出无限循环的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6067262/