As palavras async
- await
chave 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 Task
objetos mais convenientes. Para criar async
/ await
realmente 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 WebBrowser
controle.
- Outros
async
mé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 DoWork
manipulador 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.