Я использую Azure Search Client Library, и я хочу вызвать запрос несколько раз параллельно с различными параметрами запроса. Когда я пытаюсь это сделать, я получаю исключение:Использование Azure-Search-Client-Library с параллельными задачами
«Коллекция была изменена, операция перечисления не может выполняться».
Я обработал проблему, добавив объект SemaphoreSlim перед вызовом, который мешает нескольким потокам выполнять запрос в одно и то же время. Однако это решение удваивает время выполнения.
private static readonly SemaphoreSlim syncLock = new SemaphoreSlim(1);
....
await syncLock.WaitAsync();
result = await SearchClient.Indexes[IndexName].QueryAsync<MyIndex>(queryParams);
syncLock.Release();
Поскольку каждый запрос является независимым вызовом, я полагаю, что потоки не должны затрагиваться друг другом?
Большое спасибо :) – doorman