As palavras async- awaitchave e não tornarão seu aplicativo mais responsivo por conta própria. Eles simplesmente tornam a chamada e o manuseio de métodos que retornam Taskobjetos mais convenientes. Para criar async/ awaitrealmente usar threads de segundo plano, você precisará combinar com o uso de coisas como:
Task.Start()- Inicia uma determinada tarefa usando o TaskScheduler.
- PLINQ - Executa uma série de operações em paralelo, retorna uma Tarefa.
TaskCompletionSource- Uma maneira personalizada de lidar com tarefas assíncronas. Um lugar que eu usei isso foi lidar com eventos provenientes de um WebBrowsercontrole.
- Outros
asyncmétodos, como muitas das funções na API do Win 8.
Em outras palavras, async/ awaité uma extensão do Padrão Assíncrono Baseado em Tarefas . Você pode encontrar uma grande variedade de informações, incluindo muitas amostras, aqui .
O BackgroundWorkeré um componente WinForms que cria 1 thread em segundo plano usando o padrão assíncrono baseado em evento e você pode preencher o trabalho realizado nesse thread em segundo plano com seu próprio código no DoWorkmanipulador de eventos. Em geral, a Microsoft não recomenda mais usar esse padrão (consulte a parte inferior da página aqui ), mas se você já estiver familiarizado com ele, ainda poderá ser uma opção simples.
Outra opção não mencionada, são as Extensões Reativas para .NET . Essa é outra excelente estrutura para adicionar capacidade de resposta aos seus aplicativos.