我有一個方法返回一個數據表。我認爲使用.net 4.0我可以只是異步邏輯並返回數據。但是這段代碼返回的是空的Datatable對象。任何想法這個代碼有什麼問題。使用異步.net 4.0返回DataTable
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];
}
您不能在.NET 4.0或C#4中使用'async' /'await'。這是C#5中的一項新功能,取決於.NET 4.5中的類型。 –
喬恩 - 因爲他使用TaskEx.Run,我猜他正在使用異步定位包,它可以讓你定位4.0並使用異步/等待 –