私はEntity Framework 6の非同期呼び出しを使用しようとしていますが、FindAsync
を呼び出すたびにアプリケーションがハングアップし、コントロールが返されません。以下は、Find
を使用する方法です。すべてがうまくいくところです。以下はEF6を呼び出すFindAsyncはアプリケーションをハングします
public CaUsuario GetUsers(RFContext db, int id)
{
CaUsuario caUsuario = db.CaUsuarios.Find(id);
if (caUsuario == null)
throw new ObjectNotFoundException("User not found");
return caUsuario;
}
ASync
コールA Task
リターンで、async
を使用する私の試みです。 FindAsync
が呼び出されると、コントロールが返されず、アプリケーションがハングします。
public async Task<CaUsuario> GetUsers(RFContext db, int id)
{
CaUsuario caUsuario = await db.CaUsuarios.FindAsync(id);
if (caUsuario == null)
throw new ObjectNotFoundException("User not found");
return caUsuario;
}
私は間違っていますか?
どのように非同期のGetUsersを呼びますか? –
あなたはおそらく、コールチェーン/スタックを通して非同期を行っているとは限りません。タスク .Resultとコールチェーンの待機の組み合わせを使用すると、デッドロックが発生します。 –
Igor
@YuvalItzchakovあなたはそれを釘付けにしました。私がどのように呼んでいたのかは問題でした。あなたは信用を得ることができるように、答えとして投稿してください。どうもありがとうございます。初めて私はそれを使用します。決して考えなかったでしょう。 – Pascal