データテーブルを返すメソッドがあります。私は.net 4.0を使っていると思った。ロジックを非同期にしてデータを返すことができた。しかし、このコードはnull Datatableオブジェクトを返します。どのようなアイデアがこのコードで間違っている。async .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のタイプに依存します。 –
Jon - 彼はTaskEx.Runを使用しているので、彼は非同期ターゲティングパックを使用していると推測しています。これは4.0をターゲットにしてasync/awaitを使用します。 –