What is the proper technique to have ThreadA signal ThreadB of some event, without having ThreadB sit blocked waiting for an e
The BackgroundWorker class is answer in this case. It is the only threading construct that is able to asynchronously send messages to the thread that created the BackgroundWorker object. Internally BackgroundWorker
uses the AsyncOperation
class by calling the asyncOperation.Post()
method.
this.asyncOperation = AsyncOperationManager.CreateOperation(null);
this.asyncOperation.Post(delegateMethod, arg);
A few other classes in the .NET framework also use AsyncOperation: