Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 31433|Resposta: 5

[Fonte] .net/c# Classe de tarefa com async/await

[Copiar link]
Publicado em 20/10/2017 22:32:17 | | |
Classe de tarefa

A classe Task é uma abstração de operação assíncrona fornecida após o .NET 4.0, com o caminho completo para System.Threading.Tasks.Task.

A classe Task é usada para representar operações assíncronas sem valor de retorno, e para operações assíncronas com valores de retorno, a subclasse Task da classe Task deve ser <TResult>usada.
Tarefas criadas pela classe Task são adicionadas ao pool de threads.

Os <TResult>principais construtores da classe Tarefa/Tarefa são os seguintes:


Uma vez criada, a tarefa pode ser iniciada usando o método Start():


No desenvolvimento real, o método estático Run() da classe Task ou o método membro StartNew() da classe fábrica TaskFactory são usados com mais frequência para criar e iniciar novas tarefas.

Alguns métodos comuns na classe Tarefa:


Palavra-chave async/await

C# 5.0 introduziu as palavras-chave assíncronas e await, que proporcionaram melhor suporte para concorrência no nível da linguagem.

O assíncrono é usado para marcar métodos assíncronos:
A palavra-chave assíncrona é uma palavra-chave contextual e só será tratada como uma palavra-chave ao modificar um método e Lambda, e será tratada como identificador em outras áreas.
A palavra-chave assíncrona pode marcar métodos estáticos, mas não pontos de entrada (métodos Main()).
O valor de retorno do método marcado com assíncrono deve ser <TResult>Tarefa, Tarefa ou void.
await é usado para esperar pelo resultado do método assíncrono:
A palavra-chave await também é contextual e é considerada apenas uma palavra-chave no método com marcação assíncrona.
A palavra-chave await pode ser usada antes do método assíncrono e Task, e <TResult>Task, para aguardar o fim da execução assíncrona da tarefa.
Uma estrutura simples de método assíncrono é a seguinte:
Não é que o método seja marcado com a palavra-chave assíncrona, é um método assíncrono, e as instruções que aparecem diretamente dentro do método assíncrono também são executadas de forma síncronaConteúdo executado assíncronamente precisa ser executado usando a classe Task
Na verdade, um método assíncrono que não contenha nenhuma instrução await será executado de forma síncrona, momento em que o compilador dará um aviso.

Exemplo simples, usando async/await para exibir conteúdo simultaneamente na tela:

Saída: (Mono 4.4.0 & ArchLinux x64)

Não é difícil ver pelo programa acima que, no método assíncrono marcado por palavra-chave assíncrona, o código antes de usar await é executado de forma síncrona, e após await ser chamado, o código restante roda assíncronamente em uma thread separada.





Anterior:FSADF{:1_2:}
Próximo:RestSharp a. NET(C#) HTTP componente da classe auxiliar
Publicado em 01/11/2017 19:57:12 |
Olha, olha, olha
Publicado em 29/01/2019 09:37:53 |
Procurei por muito tempo no Baidu #Invokar Tarefa assíncrona()Me vi em péO método acima usa a palavra-chave assíncrona para retornar um método Invoke da classe Task, que também resolve o problema do thread, qual é o significado de toda essa função?
Publicado em 29/01/2019 21:14:36 |
Isso é realmente algo bom, e vou escrever uma compartilha assim quando tiver tempo
Publicado em 15/02/2019 16:17:22 |
O resultado de saída não pode ver claramente o efeito da execução assíncrona, e a entrada assíncrona deve ser simultânea
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com