Right now we just use something like this
stopWatch.Start();
try
{
method();
}
finally
The stopwatch should measure time spent only in one thread. You would need to run a separate instance on every thread. This would give you probably the closes results to what you want.
Alternatively (preferred option if you want to monitor the whole application, and not just some methods), there are various performance counters you can use out of the box (they are updated by .Net runtime). There is lots of information on the web, you can start with msdn: http://msdn.microsoft.com/en-us/library/w8f5kw2e(VS.71).aspx