我不确定要采用哪种策略...我专注于完成我的操作,但我也希望将性能问题控制在最低限度...有一个名为Execute()的方法必须等待(同步运行)直到操作完成。此操作发生在另一个线程上。有两种方法可以实现同一件事......
通过使用 ManualResetEvent
void Execute()
{
taskHandle = new ManualResetEvent(false);
.
.
//delegate task to another thread
.
.
taskHandle.WaitOne();
}
或者
通过使用简单的 while 构造
void Execute()
{
.
.
//delegate task to another thread
.
.
while (!JobCompleted)
Thread.Sleep(1000);
}
我应该采用两种方法中的哪一种……为什么?
编辑:
Q2。如果我只是在构建时有一个空的怎么办?有什么不同...?
while(!JobCompleted);
编辑:(我之前收集的东西)
http://www.yoda.arachsys.com/csharp/threads/waithandles.shtml - 本文说手动重置相对较慢,因为它们退出托管代码并重新进入......