У меня есть приложение WPF, которое должно асинхронно обрабатывать список элементов. На данный момент я перебираю список элементов, и для каждого из них я жду операции. Кажется, все хорошо в 90% случаев. Остальные 10% времени я получаю ошибки тайм-аута (has exceeded the allotted timeout of 00:01:00
). Что меня удивляет, так это то, что операции, похоже, завершены на бэкэнде. Все выглядит хорошо в базе данных. Нет ошибок на стороне сервера. Я только получаю эту ошибку тайм-аута на моем клиенте WPF.
Я жду моего звонка WCF для каждого из них, так что время для отдельного звонка не истекает. Каждый отдельный вызов не занимает много времени (возможно, несколько секунд), однако вся операция может занять около минуты.
private async void MyClickEvent(object sender, RoutedEventArgs e){
await HandleProcessing(MyListOfIds);
}
private async Task HandleProcessing(List<int> Ids)
{
foreach (var id in Ids)
{
try
{
// This function makes 2 wcf calls. both 2 are awaited
int i = await MyFunctionThatMakesWCFCalls(id);
}
catch (Exception e)
{
//log error
}
}
}
private async Task<int> MyFunctionThatMakesWCFCalls(int id){
bool success = await _serviceClient.MyCall(id);
if (success){
return await _serviceClient.MySecondCall(id);
}
return 0;
}
Итак, я предполагаю, что каждая итерация в цикле потенциально может занять несколько секунд (иногда до 10). Как я уже сказал, несмотря на то, что я получаю исключение в своем журнале, данные в бэкэнде, кажется, все там. Я не уверен, как обойти эту ложную ошибку. Любая помощь будет принята с благодарностью.