How to debug .NET Deadlocks (C# Deadlocks in Depth - Part 3)