我有这个方法WaitForReaderArrival
这是象下面这样:(运行所有的时间等待读者到达)等待发生的事情 - 异步或同步模型?
public void WaitForReaderArrival()
{
do
{
if (ReaderArrived())
{
break;
}
System.Threading.Thread.Sleep(1000);
} while (ReaderArrived() == false);
}
而且我在等待供读者使用的到来,
await Task.Run(new Action(WaitForReaderArrival));
if (ReaderArrived())
{
//Raise an ReaderArrived here!
..//blah blah
}
我的一个同事问我到上面的行更改只是
WaitForReaderArrival();
if (ReaderArrived())
{
//Raise an ReaderArrived here!
..//blah blah
}
的问题是:
就是我上面所采用的异步模型是不是真的有用吗?为什么她要求我把这条线改为正常的同步方法学仍然是个问题。
以上是什么等待事件发生并继续进行的正确方法?
很可能应该有某种外部事件,发生在“读者到达”时,如用户输入,套接字消息,传入串行端口数据等。有没有类似的东西? – Noseratio
不是。我正在编写的库公开了这个事件,并在上面的代码被击中时引发。 –
您使用的代码是稍微改进的[busy waiting loop](http://en.wikipedia.org/wiki/Busy_waiting)版本,它用于调节某些内容。 **如果您没有任何其他方式获得更改**的通知,那么使用'await Task.Run'将这样的循环卸载到池线程可能是您可以做的最好的事情。 – Noseratio