У меня есть что-то вроде этого:
void GenerateReports() {
foreach (var employee in employees) {
GenerateReport(employee);
}
}
GenerateReport занимает много времени, и я не хочу блокировать свой поток пользовательского интерфейса, поэтому я запускаю этот метод в отдельном потоке.
Однако, GenerateReport иногда выдает исключение. Я хочу обработать каждое исключение в моем потоке пользовательского интерфейса и перейти к следующему сотруднику. Как мне это сделать при генерации отчетов асинхронно? Если я добавлю GenerateReport в другой поток, цикл foreach будет очень быстрым, и все отчеты будут созданы одновременно:
void GenerateReports() {
foreach (var employee in employees) {
GenerateReportAsync(employee, OnDoneCallback); // returns immediately
}
}
Я все еще хочу создавать один отчет за раз, но в отдельном потоке, и обрабатывать исключение для каждого сотрудника. Как мне лучше всего это реализовать?