On one of my machines, I can consistently get the following test failure, because of an exception throw here:
As you can see, we get an ObjectDisposedException here, which cause the test to fail. There is only one problem with that:
We only dispose the queue manager on the dispose method, and that can only be called if the test itself was completed.
On the face of it, it looks like I am doing things correctly, but there is a bug here. The CLR’s threading semantics are not broken, even though on first glance it appears so.
As a side note, people keep asking me how I blog so much. This post is a perfect example. When I started writing this blog post, I was truly stamped. By the time I finished, I already noticed where the bug was and fixed it.
Can you tell?