title: SqlDataAdapter.Fill - Asynchronous approach
body: <p>Using C# / .NET 3.5.</p>
  
  <p>Currently I'm populating 2 DataTables one after the other using SqlDataAdapter.Fill().</p>
  
  <p>I want to populate both of these DataTables in parallel, at the same time by doing each one asynchronously. However, there is no asynchronous version of the Fill() method - i.e. BeginFill() would be great!</p>
  
  <p>One approach I've tried is (pseudo):</p>
  
  <ol>
  <li>SqlCommand1.BeginExecuteReader // 1st query, for DataTable1</li>
  <li>SqlCommand2.BeginExecuteReader // 2nd query, for DataTable2</li>
  <li>SqlCommand1.EndExecuteReader</li>
  <li>SqlCommand2.EndExecuteReader</li>
  <li>DataTable1.Load(DataReader1)</li>
  <li>DataTable2.Load(DataReader2)</li>
  </ol>
  
  <p>However, DataTable.Load() takes a long time:<br/>
  It takes 3 seconds to do step 1 to step 4. <br/>
  Step 5 then takes 22 seconds. <br/>
  Step 6 takes 17 seconds.<br/>
  So, combined 39 seconds for steps 5 and 6.</p>
  
  <p>The end result is, this gives me no benefit over just doing 2 SqlDataAdapter.Fills, one after the other. I want the net result to be that the entire process takes only as long as the longest query (or as close to that as possible).</p>
  
  <p>Looking for recommended ways forward to end up with something that is truly an asynchronous approach to filling a DataTable.</p>
  
  <p>Or do I just manage it myself and roll 2 separate threads, each one filling a DataTable?</p>