Monitoring Locks in a C# Multi-threaded Application

The Hairy Problem The other day I was debugging a hairy deadlock in a large application at work. When I say hairy, I mean dozens of threads, all potentially able to walk through the same areas, events raised inside a lock, and calls to other methods that recursively enter the same lock. The only way […]