1. ホーム
  2. entity-framework

[解決済み] Entity Framework 6のMulti-async?

2023-05-07 04:59:02

質問

これは私のコードです。

var banner = context.Banners.ToListAsync()
var newsGroup = context.NewsGroups.ToListAsync()
await Task.WhenAll(banner, newsGroup);

しかし、コントローラからこの関数を呼び出すと エラーが表示されました。

前の非同期処理が完了する前に、このコンテキストで2つ目の処理が開始されました。await' を使用して、このコンテキストで別のメソッドを呼び出す前に非同期処理が完了したことを確認します。インスタンスメンバはすべてスレッドセーフであることは保証されません。

この問題を解決するのを助けてください。

どのように解決するのですか?

この例外は、一度に許可される非同期操作は1つのコンテキストにつき1つだけであることを明確に説明しています。

ですから、あなたはどちらか await を1つずつ削除するか、エラーメッセージにあるように

var banner = await context.Banners.ToListAsync();
var newsGroup = await context.NewsGroups.ToListAsync();

あるいは、複数のコンテキストを使うこともできます。

var banner = context1.Banners.ToListAsync();
var newsGroup = context2.NewsGroups.ToListAsync();
await Task.WhenAll(banner, newsGroup);