Azure Search クライアント ライブラリを使用しており、さまざまなクエリ パラメーターを使用してクエリを複数回並行して呼び出したいと考えています。これを試すと、例外が発生します。
「コレクションが変更されました。列挙操作が実行されない可能性があります。」
呼び出しの前に SemaphoreSlim オブジェクトを追加して、複数のスレッドが同時にクエリを実行するのを防ぐことで、問題を処理しました。ただし、このソリューションでは実行時間が 2 倍になります。
private static readonly SemaphoreSlim syncLock = new SemaphoreSlim(1);
....
await syncLock.WaitAsync();
result = await SearchClient.Indexes[IndexName].QueryAsync<MyIndex>(queryParams);
syncLock.Release();
各クエリは独立した呼び出しであるため、スレッドが互いに影響を受けるべきではないと思いますか?