|
|
От: |
Serginio1
|
https://habrahabr.ru/users/serginio1/topics/ |
| Дата: | 16.04.20 15:51 | ||
| Оценка: | |||
S> var tasks = Task[]
S> {
S> ctx.GetTable<Table1>().ToArrayAsync(),
S> ctx.GetTable<Table2>().ToArrayAsync(),
S> // Здесь еще подобные строки
S> };
S> tasks.WaitAll(); // Валится с ошибкой InvalidOperationException: Выполнение команды не может быть продолжено до завершения отложенной асинхронной операции.
S>Если какая-либо из переданных задач завершается в состоянии сбоя, возвращаемая задача также завершается в Faulted состоянии, где его исключения будут содержать статистическую обработку набора неупакованных исключений из каждой из предоставляемых задач.
Если ни одна из поставленных задач не завершилась сбоем, но по крайней мере один из них был отменен, то возвращаемая задача завершится в Canceled состоянии.
Если ни одна из задач не была прервана и ни одна из задач не была отменена, то результирующая задача завершится в RanToCompletion состоянии.
Если переданный массив или перечисление не содержит задач, то возвращаемая задача сразу же переходит в состояние RanToCompletion до того, как оно будет возвращено вызывающему объекту.
if (continuation.Status == TaskStatus.RanToCompletion) {
long grandTotal = 0;
foreach (var result in continuation.Result) {
grandTotal += result;
Console.WriteLine("Mean: {0:N2}, n = 1,000", result/1000.0);
}
Console.WriteLine("\nMean of Means: {0:N2}, n = 10,000",
grandTotal/10000);
}
// Display information on faulted tasks.
else {
foreach (var t in tasks) {
Console.WriteLine("Task {0}: {1}", t.Id, t.Status);
}
}