title: Wait for multiple callbacks
body: <p>I am using a library which does asynchronous calls and when the response is returned a callback method is called with the result. This is a simple pattern to follow but I am now hitting a obstacle. How do I do multiple calls to asynchronous methods and wait (without blocking) for them? When I got the data from all the service, I'd like to call my own callback method which will get the two (or more) values returned by the async method.</p>
  
  <p>What's the correct pattern to follow here? By the way, I cannot change the library to use TPL or something else... I have to live with it.</p>
  
  <pre><code>public static void GetDataAsync(Action&lt;int, int&gt; callback)
  {
      Service.Instance.GetData(r1 =&gt;
      {
          Debug.Assert(r1.Success);
      });
  
      Service.Instance.GetData2(r2 =&gt;
      {
          Debug.Assert(r2.Success);
      });
  
      // How do I call the action "callback" without blocking when the two methods have finished to execute?
      // callback(r1.Data, r2.Data);
  }
  </code></pre>