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?