Are there any tools that can help find race conditions when testing multi-threaded .net code? I'm looking for something with similar capabilities to IBM's ConTest tool for Java.
Typemock Racer might be what you're looking for but I haven't used it - I just remembered something about deadlocks :)
Or this: Deadlock Detector
This announcement from Microsoft Research sounds like they have a tool that does exactly what I want. Unfortunately there's no .net version yet, but there is one planned. To quote the site:
CHESS is an automated tool for finding errors in multithreaded software by systematic exploration of thread schedules. It finds errors, such as data-races, deadlocks, hangs, and data-corruption induced access violations, that are extremely hard to find with current testing tools. Once CHESS locates an error, it provides a fully repeatable execution of the program leading to the error, thus greatly aiding the debugging process. In addition, CHESS provides a valuable and novel notion of test coverage suitable for multithreaded programs. CHESS can use existing concurrent test cases and is therefore easy to deploy. Both developers and testers should find CHESS useful.
Have you seen Debug Inspector (www.debuginspector.com) ?
It does managed and unmanaged deadlocks and covers both WaitForSingleObject and WaitForMultipleObjects and works for XP and Vista
There’s a great windbg extension, written by Steve Johnson, called sosex which has a deadlock finding command. You can find it at http://www.stevestechspot.com/downloads/sosex_32.zip and you can read more about it here: http://www.stevestechspot.com/SOSEXANewDebuggingExtensionForManagedCode.aspx and here: http://www.stevestechspot.com/SOSEXUpdatedV11Available.aspx.