【发布时间】:2011-11-01 15:41:52
【问题描述】:
我有一个List(Of IWorker),其中包含许多混凝土。 IWorker 又具有Startup() 和Shutdown() 方法。
在 Worker 类中,Startup() 创建一个新的工作线程然后返回。 Shutdown() 目前设置了一个私有 ShutDownRequested 标志并返回。工作线程检查标志(最坏的情况是每隔几秒)。
这一切正常,但目前父应用无法确定 Worker 是否已完成关闭。
我可以看到多种解决方法,但不确定哪种方法最好。
- 将
State属性添加到IWorker。应该可以,但我要去投票州,这似乎有点讨厌。 - 使关机命令阻塞 - 可能是我理想的解决方案,但我不确定如何实现它 - 工作人员
Sunclock是否是一个私有对象,Shutdown()也应该在设置标志后尝试同步? - 还有别的吗?
任何文章、建议或建议表示赞赏。 C# 或 VB 中的示例很好。
【问题讨论】:
-
这取决于你想做什么以及为什么。拨打
Shutdown()时要屏蔽吗?您想向用户显示状态吗?还有什么? -
@svick 这是在控制台应用程序中运行的。目前,在调用启动工作人员后,控制台每隔几秒循环一次,从工作人员那里读取一些状态信息并显示它(处理的事件、使用的带宽等)。当用户按 Enter 键退出应用程序时,会向每个工作人员发送关闭信息。我只想等到关机完成,打印一个干净关机的确认,然后退出。如果应用程序没有关闭并且工作人员退出,它会被回收并重新启动。
标签: c# vb.net multithreading