Mam metodę, która zwraca datatable. Myślałem, że przy użyciu .net 4.0 mógłbym asynchronizować logikę i zwracać dane. Ale ten kod zwraca null obiekt Dataable. Wszelkie pomysły na temat tego kodu.Powracaj DataTable za pomocą async .net 4.0
public DataTable GetData(string sql, string connectionName)
{
DataTable dt = (DataTable)GetDataAsync(sql, connectionName).AsyncState;
return dt;
}
private async Task<DataTable> GetDataAsync(string sql, string connectionName)
{
return await TaskEx.Run(() => { return FillData(sql, connectionName); });
}
private DataTable FillData(string sql, string connectionName)
{
SqlConnection conn = _connections.Where(w => w.ConnectionName == connectionName).Single().Connection;
SqlDataAdapter adp = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
adp.Fill(ds);
return ds.Tables[0];
}
Nie możesz użyć 'async' /' await' z .NET 4.0 lub C# 4. Jest to nowa funkcja w C# 5 i zależy od typów w .NET 4.5. –
Jon - skoro używa TaskEx.Run, zgaduję, że używa się asynchronicznie kierowania pakiet, który umożliwia kierowanie 4,0 i asynchronicznie/czekają –