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: