title: How to dispose objects having asynchronous methods called?
body: <p>I have this object <code>PreloadClient</code> which implements <code>IDisposable</code>, I want to dispose it, but after the asynchronous methods finish their call... which is not happening</p>
  
  <pre><code>    private void Preload(SlideHandler slide)
      {
          using(PreloadClient client = new PreloadClient())
          {                 
               client.PreloadCompleted += client_PreloadCompleted;
               client.Preload(slide);
          }
          // Here client is disposed immediately
      }
      private void client_PreloadCompleted(object sender, SlidePreloadCompletedEventArgs e)
      {
       // this is method is called after a while, 
       // but errors are thrown when trying to access object state (fields, properties)
      }
  </code></pre>
  
  <p>So, any ideas or work arounds ??</p>