title: Using the Stopwatch with Async methods
body: <p>I have some code as follows:</p>
  
  <pre><code>public void Start()
  {
      var watch = new Stopwatch();
      watch.Start();
  
      Task.Factory.StartNew(MyMethod1);
      Task.Factory.StartNew(MyMethod2);
  
      watch.Stop();
      Log(watch.ElapsedMilliseconds);
      Task.Factory.StartNew(MyMethod3);
  }
  </code></pre>
  
  <p>Because MyMethod1 and MyMethod2 are called Asynchronously watch.Stop() gets called at the wrong time. How I can ensure that .Stop gets called and logged after MyMethod1 and MyMethod2 finish BUT ensure that MyMethod3 does not have to wait.</p>
  
  <p>I want to keep all Stopwatch functionality in my Start() method and not have the logging in any of my 3 methods i.e. MyMethod1, MyMethod2 and MyMethod3</p>