<p>Does anyone have any advice for a consistent way to unit test a multithreaded application?  I have done one application where our mock "worker threads" had a thread.sleep with a time that was specified by a public member variable.  We would use this so we could set how long a particular thread would take to complete its work, then we could do our assertions.  Any ideas of a better way to do this?  Any good mock frameworks for .Net that can handle this?</p>

TypeMock
(commercial) has a unit testing framework that automatically tries to find deadlocks in multithreaded applications and I think can be set up to run threads with predictable context switching.
I saw a demo this week at a show -- apparently it's in Alpha (called Racer)
http://www.typemock.com/Typemock_software_development_tools.html