【发布时间】:2012-09-26 05:34:51
【问题描述】:
我有一个返回数据表的方法。我认为使用 .net 4.0 我可以异步逻辑并返回数据。但是此代码返回 null 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 中的类型。 -
Jon - 因为他使用的是 TaskEx.Run,我猜他使用的是异步定位包,它可以让您定位 4.0 并使用 async/await
标签: .net c#-4.0 async-await