3

我有这个问题,会AsyncWaitHandle.WaitOne阻塞 CLR 线程吗?还是创建一个 I/O 完成端口?

例如,当我运行我的应用程序时,我启动了一个初始化一些数据的任务“A”,当新请求到达时,我希望他们等到“A”完成,所以我可以做一个IAsyncResult.AsyncWaitHandle.WaitOne,但是......它会阻塞吗调用线程直到“A”结束,或者它是否创建了一个 I/O 完成端口,当“A”完成时也会通知该端口。

如果没有,有没有办法做到这一点?

问候。

4

1 回答 1

4

是的,它会阻塞线程,但与其他任何线程一样WaitHandle,它会阻塞在操作系统内核中,因此不会占用任何 cpu 时间。

如果你不想阻塞你的线程,但想要一个“回调”,你可以使用线程池:

ThreadPool.RegisterWaitForSingleObject( waitHandle, callback, ...
于 2011-12-12T13:27:52.170 回答