В asyncи awaitключевых словах не сделают ваше приложение более отзывчивым на своем собственном. Они просто делают вызов и обработку методов, которые возвращают Taskобъекты, более удобными. Для того, чтобы создавать async/ awaitфактически использовать фоновые потоки, вам нужно сочетать с такими вещами, как:
Task.Start()- Запускает заданное задание, используя TaskScheduler.
- PLINQ - выполняет серию операций параллельно, возвращает задачу.
TaskCompletionSource- Пользовательский способ обработки асинхронных задач. Одно из мест, где я использовал это, было для обработки событий, поступающих от элемента WebBrowserуправления.
- Другие
asyncметоды, такие как многие функции в Win 8 API.
Другими словами, async/ awaitявляется расширением асинхронного шаблона на основе задач . Вы можете найти большое количество информации, включая множество примеров, здесь .
Это BackgroundWorkerкомпонент WinForms, который создает 1 фоновый поток, используя асинхронный шаблон на основе событий , и вы можете заполнить работу, выполненную в этом фоновом потоке, своим собственным кодом в DoWorkобработчике событий. В общем, Microsoft больше не рекомендует использовать этот шаблон (см. Нижнюю часть страницы здесь ), хотя, если вы уже знакомы с ним, это может быть простой вариант.
Другой вариант, не упомянутый, - это Реактивные расширения для .NET . Это еще одна отличная основа для добавления отзывчивости в ваши приложения.