我有一个返回数据表的方法。我认为在使用.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];
}
async
/await
。这是C# 5的新功能,并依赖于.NET 4.5中的类型。 - Jon Skeet