c# - 在 C# 中处理退出无限循环的正确方法

标签 c# winforms

在我的应用程序中,我发现需要有无限的 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/

相关文章:

c# - 轮询网络服务

c# - C# 是否清理 C++ 分配的内存?

c# - 如何着手为 1 箱推箱子实现快速最短路径搜索?

c# - 以编程方式添加和编辑控件

.net - 将属性设置应用于 Visual Studio 中项目中的所有类似控件

按下 mousedown 按钮时 C# 循环

c# - 如何对忽略空白行的datagridview进行排序

c# - 如何在 Application.Run(form1) 执行时隐藏 form1?

javascript - 在我的 View 中显示以数组字节为单位的图像

c# - Entity Framework 左连接