If you want to test and reproduce multi thread applications bugs there is a new tool from Microsft called: CHESS.
CHESS is a tool for finding and reproducing Heisenbugs in concurrent programs. CHESS repeatedly runs a concurrent test ensuring that every run takes a different interleaving. If an interleaving results in an error, CHESS can reproduce the interleaving for improved debugging. CHESS is available for both managed and native programs.
Great movie that explain CHESS: An Automated Concurrency Testing Tool
You must adopt this tool for your future multi threaded (concurrent programs) programs.
More information on Threading in C# can be found on Joseph Albahari great article here.