Я немного смущен, как мне реализовать рабочий процесс нескольких асинхронных задач. Например, при запуске Task1, когда Task1 завершился, Task2 запущен, когда Task2 завершил запуск TaskN и т. Д.
Или другие слова - как асинхронная задача может уведомить родительскую задачу о его статусе? Я предполагаю, что могу использовать здесь TaskStatus
, но не знаю, как именно. Я искал в MSDN, но нет полного примера такого шаблона.
P.S. Я редактирую свой вопрос, чтобы сосредоточиться на одном конкретном вопросе.Асинхронный шаблон - запуск задачи при выполнении предыдущей задачи
ответ
Если вы действительно хотите, чтобы ждать, чтобы начать task2, пока task1 завершается, один из способов не будет так:
Task<string> task1 = GetUsername();
string username = await task1; // blocks(or "waits") here until GetUsername returns
Task<string> task2 = GetConfig(username); // since we have the return from above, we can pass it here
string config = await task2 ; // blocks here until GetConfig returns
Примечание в этом TASK1 и TASK2 не выполняются параллельно друг с другом, так как мы явно дождитесь завершения одного из них, прежде чем запускать другой, как вы просили. Хотя они асинхронны относительно потока, вызывающего их.
Если у вас есть List<Task>
и вы хотите выполнить их последовательно, то подход будет другим, и выполнение их параллельно будет еще одним подходом.
Если вы посмотрите вокруг stackoverflow, вы увидите множество примеров использования некоторых методов, таких как Wait, WaitAll, WhenAll и т. Д., Которые могут позволить вам делать много разнообразных комбинаций вещей.
Да, мне действительно нужно подождать, пока предыдущая задача не завершится, потому что она передает некоторые идентификаторы в базу данных, которые необходимы для следующей задачи. –
- 1. Запуск задачи при выполнении задачи асинхронной работы
- 2. Изменение свойств задачи при выполнении задачи
- 3. Заблокировать задачи до завершения предыдущей задачи
- 4. Ошибка при выполнении задачи Async
- 5. Слушайте нить при выполнении задачи
- 6. Проблема при выполнении задачи Ant
- 7. Запуск задачи изнутри задачи. (смотреть)
- 8. Асинхронный тайм-аут задачи?
- 9. асинхронный выполнение задачи asp.net
- 10. Ошибка при выполнении задачи рейк из IDE
- 11. Вручную Запуск задачи ANT
- 12. Запуск события на переднем плане при выполнении фоновой задачи одновременно?
- 13. Запуск панели выполнения при выполнении другой задачи android
- 14. Запланированные задачи Coldfusion - Периодически сбрасывается каждый раз при выполнении задачи?
- 15. Task.WaitAll() при выполнении задачи только задерживает выполнение исходной задачи?
- 16. Ошибка при выполнении фоновой задачи после возврата из дочерней задачи
- 17. Запуск фоновой задачи при запуске
- 18. Запуск функции при завершении задачи
- 19. Запуск фоновой задачи при запуске
- 20. сельдерея Запуск задачи, когда другие задачи закончивших
- 21. Запуск задачи из моей пользовательской задачи?
- 22. Запуск другой задачи после первой задачи
- 23. Запуск задачи gulp после завершения другой задачи
- 24. Замечательная ошибка при выполнении задачи gulp
- 25. Swipe Refresh freezes при выполнении async-задачи
- 26. Как отобразить ProgressDialog при выполнении фоновой задачи?
- 27. Приложение Сбой при выполнении асинхронной задачи
- 28. Проблема при выполнении задачи, назначенной пользователю jBPM5
- 29. Показывать индикатор выполнения при выполнении задачи
- 30. Завершение транзакции фрагмента при выполнении задачи
Я не спускал вниз, но вы задали несколько вопросов, которые могли бы быть их собственным вопросом, потому что каждый из них требует достаточно подробного ответа. Выполнение нескольких задач параллельно: http://stackoverflow.com/q/12337671/84206 Обработка исключений: http://msdn.microsoft.com/en-us/library/dd537614(v=vs.110).aspx Есть много других вариантов: http://stackoverflow.com/questions/tagged/async-await – AaronLS