Programação assíncrona usando delegados

Os delegados permitem que você chame um método síncrono de maneira assíncrona. Quando você chama um delegado de forma síncrona, o Invoke método chama o método de destino diretamente no thread atual. Se o BeginInvoke método for chamado, o Common Language Runtime (CLR) coloca em fila a solicitação e retorna imediatamente ao chamador. O método de destino é executado de forma assíncrona num tópico do pool de tópicos. O thread original, que enviou a solicitação, é livre para continuar a execução em paralelo com o método de destino. Se um método de retorno de chamada tiver sido especificado na chamada para o BeginInvoke método, o método de retorno de chamada será chamado quando o método de destino terminar. No método de retorno de chamada, o método EndInvoke obtém o valor de retorno e quaisquer parâmetros de entrada/saída ou somente saída. Se nenhum método de retorno de chamada for especificado ao chamar BeginInvoke, EndInvoke pode ser chamado a partir do thread que chamou BeginInvoke.

Importante

Os compiladores devem emitir classes delegadas com Invoke, BeginInvokee EndInvoke métodos usando a assinatura de delegado especificada pelo usuário. Os métodos BeginInvoke e EndInvoke devem ser decorados como nativos. Como esses métodos são marcados como nativos, o CLR fornece automaticamente a implementação no tempo de carregamento da classe. O carregador garante que eles não sejam substituídos.

Na presente seção

Chamando métodos síncronos de forma assíncrona
Discute o uso de delegados para fazer chamadas assíncronas para métodos comuns e fornece exemplos de código simples que mostram as quatro maneiras de aguardar o retorno de uma chamada assíncrona.

Padrão assíncrono baseado em eventos (EAP)
Descreve a programação assíncrona no .NET.

Ver também