私はロングランニングI/Oがasync/awaitにぴったりのコードを持っています。私は、リポジトリパターンをやっていると私はオブジェクトは、このコードで、私は細かい作業を実施していますリポジトリパターンで非同期待機を行うにはどうすればよいですか?
public class HomeController : Controller
{
private ImainRepository _helper = null;
public HomeController()
{
this._helper = new MainRepository();
}
public async Task<string> Aboutt()
{
// Here I get the error
object main = await _helper.Top_Five() ?? null;
if(main != null)
{
return main.ToString();
}
else
{
return null;
}
}
}
方法をawaiter方法が含まれていないそうだとしてコントローラに待つ行う方法を見つけ出すことはできませんあなたが以下に見るように。私はデータベースからデータを取り出し、それを文字列形式で返します。私が望むのは、作る方法を見つけることです。 オブジェクトmain = await _helper.Top_Five()??ヌル;それ以外の場合は、同期コードと非同期を混在させています。どんな提案も素晴らしいでしょう...
public async Task<string> Top_Five()
{
try
{
using (NpgsqlConnection conn = new NpgsqlConnection("Config"))
{
conn.Open();
string Results = null;
NpgsqlCommand cmd = new NpgsqlCommand("select * from streams limit 15)t", conn);
using (var reader = await cmd.ExecuteReaderAsync())
{
while (reader.Read())
{
Results = reader.GetString(0);
}
return Results;
}
}
}
catch(Exception e)
{
// Log it here
return null;
}
}
あなたのプロジェクトで使用するように設定されている.NETフレームワークのバージョンはありますか?確かにそれは4.5以上でなければならないと確信しています –
はい実際にはAsp.NetコアRC2 –
私はエラーを再現できません。あなたは[mcve]を提供できますか? – svick