More disposal subtleties and framework bugs that stalks me
This one was a real pain to figure out. Can you imagine what would be the result of this code?
1: var queue = new MessageQueue(queuePath);2: queue.Dispose();3: var peekAsyncResult = queue.BeginPeek();4: peekAsyncResult.AsyncWaitHandle.WaitOne();
If you guessed that we would get ObjectDisposedException, you are sadly mistaken. If you guessed that this would lead to a deadlock, you won.
Figuring out the behavior in a multi threaded system where one thread was beginning to listen and another was disposing the queue and waiting for pending operations to complete is… not fun.
Update: For some strange reason, I am not able to reproduce the problem shown above. I know that I did before I posted this, but I posted it as one of the last things that I did that day. I think that this is somehow related to the actual queue used and whatever or not it has messages.

Comments
Comment preview