SqlDataAdapter.Fill - Abordagem assíncrona

Usando C # / .NET 3.5.

Atualmente, estou preenchendo 2 DataTables, um após o outro, usando SqlDataAdapter.Fill ().

Quero preencher essas duas DataTables em paralelo, ao mesmo tempo, executando cada uma de forma assíncrona. No entanto, não existe uma versão assíncrona do método Fill () - ou seja, BeginFill () seria ótimo!

Uma abordagem que tentei é (pseudo):

SqlCommand1.BeginExecuteReader // 1ª consulta, para DataTable1SqlCommand2.BeginExecuteReader // 2ª consulta, para DataTable2SqlCommand1.EndExecuteReaderSqlCommand2.EndExecuteReaderDataTable1.Load (DataReader1)DataTable2.Load (DataReader2)

No entanto, DataTable.Load () leva muito tempo:
Leva 3 segundos para executar as etapas de 1 a 4.
O passo 5 leva 22 segundos.
O passo 6 leva 17 segundos.
Portanto, combine 39 segundos para as etapas 5 e 6.

O resultado final é que isso não me beneficia em apenas realizar 2 SqlDataAdapter.Fills, um após o outro. Eu quero que o resultado líquido seja que todo o processo leve apenas o tempo que a consulta mais longa (ou o mais próximo possível dela).

Procurando maneiras recomendadas para terminar com algo que seja realmente uma abordagem assíncrona para preencher uma DataTable.

Ou eu mesmo gerencio e rolo 2 threads separados, cada um preenchendo uma DataTable?

questionAnswers(2)

yourAnswerToTheQuestion