Programação assíncrona usando delegados
Os representantes permitem que você chame um método síncrono de maneira assíncrona. Quando você chama um representante de forma síncrona, o método Invoke
chama o método de destino diretamente no thread atual. Se o método BeginInvoke
for chamado, o CLR (Common Language Runtime) enfileira a solicitação e retorna imediatamente ao chamador. O método de destino é chamado de forma assíncrona em um thread a partir do pool de threads. O thread original, que enviou a solicitação, permanece livre para continuar a executar em paralelo com o método de destino. Se um método de retorno de chamada foi especificado na chamada para o método BeginInvoke
, o método de retorno de chamada é chamado quando termina o método de destino. O método de retorno de chamada, o método EndInvoke
obtém o valor retornado e os parâmetros de entrada/saída ou somente de saída. Se nenhum método de retorno de chamada for especificado ao chamar BeginInvoke
, EndInvoke
pode ser chamado do thread que chamou BeginInvoke
.
Importante
Os compiladores devem emitir classes de representante com os métodos Invoke
, BeginInvoke
e EndInvoke
usando a assinatura de representante 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.
Nesta seção
Chamando métodos síncronos de forma assíncrona
Discute o uso de representantes para fazer chamadas assíncronas a métodos comuns e fornece exemplos de código simples que mostram quatro maneiras de aguardar o retorno de uma chamada assíncrona.
Seções relacionadas
Padrão assíncrono baseado em evento (EAP)
Descreve a programação assíncrona no .NET.