Можно ли на асинхронных страницах ASP.NET выполнить две последовательные асинхронные задачи?
-
11-09-2019 - |
Вопрос
В ASP.NET вы можете запускать асинхронные задачи следующим образом:
PageAsyncTask task1 =
new PageAsyncTask(BeginAsyncOperation1, EndAsyncOperation1, TimeoutAsyncOperation1, state);
RegisterAsyncTask(task1);
PageAsyncTask task2 =
new PageAsyncTask(BeginAsyncOperation2, EndAsyncOperation2, TimeoutAsyncOperation2, state);
RegisterAsyncTask(task2);
Однако предположим, что вам нужно убедиться, что задача 1 завершится до выполнения задачи 2.Это возможно?
Насколько я понимаю, эти задачи будут выполняться параллельно.
Решение
Самым простым решением было бы запустить задачу Task2 в обработчике EndAsyncOperation1.
Другие советы
Если задача 1 должна быть завершена раньше задачи 2, вы можете рассмотреть возможность создания третьей операции, которая инкапсулирует синхронные вызовы BeginAsyncOperation1 и BeginAsyncOperation2 и запускает эту операцию асинхронно.Работа над второй задачей не начнется, пока не будет завершена первая задача.
Решение находится в конструкторе PageAsyncTask.Установите логический флаг «параллельно» в значение false, и они будут выполняться последовательно.