【发布时间】:2012-09-06 21:21:00
【问题描述】:
我需要停止一个线程,直到另一个线程设置一个布尔值并且我不想在它们之间共享一个事件。
我目前拥有的是以下使用睡眠的代码(这就是我要更改的代码):
while (!_engine.IsReadyToStop())
{
System.Threading.Thread.Sleep(Properties.Settings.Default.IntervalForCheckingEngine);
}
有什么想法吗?
编辑以澄清事情:
我不拥有一个名为 _engine 的类的对象。我无法修改它,这就是为什么我不想在它们之间共享事件。我需要等到该类的方法返回 true。
【问题讨论】:
-
您为什么不想分享活动?有两种方法可以做你想做的事:事件或旋转。
-
您想共享一个布尔值而不是一个事件。为什么?有什么区别?
-
好的,你得到了答案。不,你不能
-
好吧,如果您无法更改该类并且它与终止通信的唯一方式是使用该布尔值,那么恐怕您除了旋转之外什么也做不了。
-
如果 'engine' 的东西调用了 'OnReadyToStop' 事件,而不是提供这种愚蠢的轮询方法,那会更友好,但你似乎被它困住了。真的需要引擎重建..
标签: c# .net multithreading mutex semaphore