Episódio
Seis dicas essenciais para assíncrono - Introdução
Assíncrono envolve alguns novos conceitos. Eles não são difíceis; apenas desconhecido. Ao longo do ano passado, Lucian Wischik tem observado como as pessoas usam async/await em C# e VB. Esta série apresenta os três principais padrões assíncronos e antipadrões, e as três principais dicas para escrever suas próprias bibliotecas assíncronas.
Dicas:
- O Async void é apenas para manipuladores de eventos de nível superior e coisas semelhantes a eventos. Não o use em outro lugar do seu código.
- É crucial distinguir o trabalho vinculado à CPU (deve ser feito no threadpool) do trabalho vinculado à E/S (que não precisa).
- Você pode encerrar eventos em APIs de retorno de tarefas e aguardá-los. Isso pode simplificar drasticamente o código.
- Os métodos de biblioteca assíncrona não devem mentir: eles não devem usar Task.Run internamente em segredo e devem expor uma assinatura assíncrona se e somente se sua implementação for assíncrona
- Os métodos de biblioteca assíncrona devem ter APIs assíncronas volumosas, não chatas. Mas se a tagarelice é inevitável, saiba sobre essas microotimizações para reduzir as despesas gerais de alocação de heap.
- Os métodos de biblioteca assíncrona devem considerar a tarefa. ConfigureAwait(false) para reduzir seu impacto na fila de mensagens da interface do usuário.
Se você entender o fluxo básico de controle em um método assíncrono, esses três pontos cairão naturalmente no lugar. Este primeiro vídeo de introdução explica esse fluxo de controle.
Slides e código-fonte estão disponíveis no blog de Lucian.
Assíncrono envolve alguns novos conceitos. Eles não são difíceis; apenas desconhecido. Ao longo do ano passado, Lucian Wischik tem observado como as pessoas usam async/await em C# e VB. Esta série apresenta os três principais padrões assíncronos e antipadrões, e as três principais dicas para escrever suas próprias bibliotecas assíncronas.
Dicas:
- O Async void é apenas para manipuladores de eventos de nível superior e coisas semelhantes a eventos. Não o use em outro lugar do seu código.
- É crucial distinguir o trabalho vinculado à CPU (deve ser feito no threadpool) do trabalho vinculado à E/S (que não precisa).
- Você pode encerrar eventos em APIs de retorno de tarefas e aguardá-los. Isso pode simplificar drasticamente o código.
- Os métodos de biblioteca assíncrona não devem mentir: eles não devem usar Task.Run internamente em segredo e devem expor uma assinatura assíncrona se e somente se sua implementação for assíncrona
- Os métodos de biblioteca assíncrona devem ter APIs assíncronas volumosas, não chatas. Mas se a tagarelice é inevitável, saiba sobre essas microotimizações para reduzir as despesas gerais de alocação de heap.
- Os métodos de biblioteca assíncrona devem considerar a tarefa. ConfigureAwait(false) para reduzir seu impacto na fila de mensagens da interface do usuário.
Se você entender o fluxo básico de controle em um método assíncrono, esses três pontos cairão naturalmente no lugar. Este primeiro vídeo de introdução explica esse fluxo de controle.
Slides e código-fonte estão disponíveis no blog de Lucian.
Tem comentários? Envie um problema aqui.