私のベースリポジトリクラスを非同期にしようとしていますが、何か問題があります。私はC#アプリケーションでDapper ORMを使用しています。非同期/待機のメインスレッドをブロックします
基本法
protected async Task<List<T>> Read<T>(CommandDefinition cmd) {
using(SqlConnection myCon = new SqlConnection(Config.DBConnection)) {
await myCon.OpenAsync();
IEnumerable<T> results = await myCon.QueryAsync<T>(cmd);
List<T> retVal = results.ToList();
myCon.Close();
return retVal;
}
}
呼び出す方法
public List<Category> GetAllActiveCategories(Guid siteGuid) {
return base.Read<Category>(SPNAME_GETALLACTIVE, siteGuid).Result;
}
すべてが私のために見えます。私はasyncキーワードで装飾されたメソッド宣言を持っています。私は非同期メソッドを待っています。
私が抱えている問題は、スレッドがブロックすることです。await myCon.OpenAsync();
です。これはasyncとawaitを使用する私の最初の試みです。だから私は何か間違っていると確信していますが、それは明らかではありません。助けてください!
@KirillShlenskiy私はあなたが何かにいると思います。使用している方法のうちの1つを表示するようにほとんど編集します。これは、それをブロックしています。 – fizch
あなたは消費側を投稿したので、私は自信があります。私のコメントを答えとして返す。 –