Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 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 tiver sido especificado na chamada do método BeginInvoke
, o método de retorno de chamada será invocado ao término do 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
poderá ser chamado a partir da thread que chamou BeginInvoke
.
Importante
Os compiladores devem emitir classes delegadas com Invoke
, BeginInvoke
e EndInvoke
métodos usando a assinatura delegada 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 delegados para fazer chamadas assíncronas a métodos comuns e fornece exemplos de código simples que mostram as 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.