AsyncWaitHandle.WaitOne阻止CLR线程吗? 或者它是否创建了I / O完成端口?

我有这个问题, AsyncWaitHandle.WaitOne阻止了CLR线程吗? 或者它是否创建了I / O完成端口?

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

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

问候。

是的,它会阻塞线程,但与任何其他WaitHandle ,它会在操作系统内核中阻塞,因此不需要任何CPU时间。

如果您不想阻止线程,但确实需要“回调”,则可以使用线程池:

 ThreadPool.RegisterWaitForSingleObject( waitHandle, callback, ...