Compartilhar via


mensagem Processamento assíncrono

Se você desejar recuperar mensagens sem vincular processamento do seu aplicativo, você pode recuperar mensagens assincronamente.No processamento de mensagens assíncrono, o método que inicia uma tarefa é retornado imediatamente sem aguardar que um resultado.O aplicativo pode continuar a fazer o que ele foi originalmente fazendo enquanto a tarefa é concluída.Quando a tarefa for concluída, o servidor pode notificar o aplicativo que a mensagem foi processada com êxito.

Há dois tipos de operações de sistema de sistema sistema de mensagens assíncrono — recebendo sistema de sistema sistema de mensagens de forma assíncrono e exibição de sistema de sistema sistema de mensagens de forma assíncrono.Quando você recupera uma mensagem de forma assíncrona, você usar o BeginReceive método e o EndReceive método para marcar o início e o participante da operação. sistema autônomo ações que ocorrem são:

  • The BeginReceive método retorna imediatamente e gera um evento chamado ReceiveCompleted Quando uma mensagem se torna disponível na fila ou se a mensagem estiver inspecionar ou receber já existe.

  • The ReceiveCompleted evento retorna um objeto do tipo IAsyncResult que contém informações sobre a operação assíncrono.

  • Depois que o evento concluído é recebido, você telefonar o EndReceive método para concluir a operação. Dentro da telefonar de participante, você pode acesso a mensagem ou recuperá-lo por acesso ing o ReceiveCompletedEventArgs classe.

Você pode acessar o IAsyncResult em todo o ciclo de vida da operação de objeto, mas normalmente você irá usá-lo até que não EndReceive é chamado. No entanto, se você iniciar várias operações assíncrono, você pode colocar seus IAsyncResult valores em uma matriz e especifique se esperar que todas as operações ou qualquer operação individual termine. Nesse caso, use o AsyncWaitHandle propriedade das IAsyncResult objeto para identificar as operações concluídas.

Peek, como Receive, usa dois métodos chamados BeginPeek e EndPeek para o colchete de início e no participante da operação assíncrono. BeginPeek retorna imediatamente e gera um evento chamado PeekCompleted Quando uma mensagem se torna disponível. Como ReceiveCompleted, esse evento retorna um IAsyncResult objeto que você pode manipular para obter informações sobre a operação.

Além disso, ambos assíncrono recebem e operações de pico podem usar um período de time limite para especificar quanto time você deseja aguardar uma mensagem se torne disponível.Para fazer isso, você usar um formulário de qualquer um dos métodos sobrecarregado para passar um TimeSpan objeto que indica o time de espera. The ReceiveCompleted ou PeekCompleted evento é gerado se o período de time limite expirar, mas o IsCompleted propriedade no IAsyncResult objeto é definido como false para indicar que uma mensagem não foi abordada.

Para obter mais informações sobre o processamento assíncrono, consulte as seguintes páginas:

Para

Consulte

Instruções passo a passo sobre como receber uma mensagem de forma assíncrona

Como: Receber mensagens de forma assíncrona

Uma visão geral sobre o BeginPeek método e seus membros

BeginPeek

Uma visão geral sobre o BeginReceive método e seus membros

BeginReceive

Recebendo notificação de sua operação assíncrono

Há duas maneiras de você pode receber notificação quando seu espiada operação ou recepção assíncrono for concluída com êxito:

  • Você pode criar um evento manipulador que manipulará o ReceiveCompleted ou PeekCompleted evento s quando elas ocorrem.

  • Você pode usar um retorno de chamada para automaticamente inspeção para mensagens de entrada e passagem de processamento para seu aplicativo quando uma mensagem chega.

Quando você usa evento notificação, você criar um método que manipula o processamento da mensagem e retorna uma notificação quando termina o processamento.Você então telefonar o método que inicia o processamento assíncrono.O sistema cria o evento manipuladores para você automaticamente quando você clica clicar duas vezes em seu MessageQueue componente no designer.

Observação:

No evento-notificação de cenário, BeginPeek ou BeginReceive Retorna uma única mensagem e interrompe o processamento. Você deve chamar BeginPeek ou BeginReceive novamente para cada mensagem você deseja recuperar.

Uma maneira alternativa para processar mensagens de forma assíncrona é usar um retorno de chamada.Um retorno de chamada identifica um delegado que você deseja associar o seu BeginPeek ou BeginReceive operações. Nesse cenário, o delegado continua a procurar novas notificações de eventos após o processamento de cada mensagem.

Consulte também

Tarefas

Como: Receber mensagens de forma assíncrona

Como: Inspecionar mensagens

Como: Receber mensagens por programação

Outros recursos

Lendo e recebendo mensagens