I\'m trying to measure the execution time of some bits of code as accurately as possible on a number of threads, taking context switching and thread downtime into account. The a
You can use Stopwatch.Start() and Stopwatch.Stop() methods to pause/continue time measurement, it does not reset Elapsed/ElapsedMilliseconds value so perhaps you can leverage this.
Regarding thread context switches - I believe there are no ways to handle it in managed code so this is not possible to exclude time when thread was suspended
EDIT:
An interesting article with benchmarks: How long does it take to make a context switch?