I have that question, does AsyncWaitHandle.WaitOne
block the CLR thread? or does it create an I/O completion port?
For example, when I run my application I launch a task 'A' that initializes some data, when new requests arrives, I want them to wait till 'A' has finished, so I can do a IAsyncResult.AsyncWaitHandle.WaitOne
, but... does it block the calling thread till 'A' ends or does it create a I/O completion port that will be also notified when 'A' finish.
If not, is there a way to do that?
Regards.
Yes, it blocks the thread, but like any other WaitHandle
, it blocks in the OS kernel so it doesn't take any cpu time.
If you don't want to block your thread, but do want a "callback", you can use the thread pool:
ThreadPool.RegisterWaitForSingleObject( waitHandle, callback, ...
来源:https://stackoverflow.com/questions/8474899/does-asyncwaithandle-waitone-block-the-clr-thread-or-does-it-create-an-i-o-comp