Como: Recuperar mensagens
Você pode usar qualquer um dos mecanismos de recuperação estático ou dinâmico para recuperar uma lista de mensagens.Quando você recupera um estático lista de mensagens, o sistema retorna uma matriz de Message objetos que representam todas as mensagens na fila.
Quando você recupera uma lista dinâmica de mensagens, o sistema retorna um MessageEnumerator objeto que representa todas as mensagens na fila. A MessageEnumerator o objeto é um cursor, inicializado no início de uma lista dinâmica. A ordem da lista é igual a ordem das mensagens na fila de acordo com a prioridade da mensagem.Você pode mover o cursor para a primeira mensagem na fila chamando o MoveNext método. Depois que o enumerador foi inicializado, você pode usar MoveNext para percorrer encaminhar as mensagens remanescentes. Você pode especificar se deseja aguardar uma mensagem se torne disponível, passando um time limite para o MoveNext método.
Como o enumerador é dinâmico, ele pode acesso uma mensagem que é acrescentada além da posição corrente do cursor (por exemplo, devido a baixa prioridade).O enumerador não é possível acessar uma mensagem será inserida antes da posição corrente do cursor.Não é possível retroceder uma etapa com um MessageEnumerator. Um cursor permite a movimentação, encaminhar-only.The Reset método permite que você coloque o cursor novamente no início da fila.
Observação: |
---|
Se você instancia um MessageQueue com DenySharedReceive conjunto para true, nenhum Outros aplicativo pode modificar as mensagens em seu enumerador enquanto a conexão com a fila. |
Para recuperar uma lista estática de mensagens
Criar uma instância do MessageQueue componente e conjunto seus Path propriedade para a fila à qual deseja fazer referência. Para obter mais informações, consulte Como: Criar instâncias de componentes do MessageQueue.
Observação: Se você tiver criado seu componente de Gerenciador de servidores, the Path propriedade é definida automaticamente para o caminho da fila para essa fila.
Criar uma matriz que faz referência a Message classe para manter os resultados da consulta.
Chame o método GetAllMessages.
Atribua os resultados para a matriz que você criou.
O código a seguir mostra como você pode usar o GetAllMessages função para recuperar as mensagens de uma fila e exibir os rótulos de mensagem em uma caixa de listagem. Este exemplo assume que um MessageQueue instância do componente foi adicionada ao aplicativo.
Private Sub button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles button1.Click Me.MessageQueue1.Path = ".\MyQueue" Dim msg() As System.Messaging.Message Dim i As Integer ' Retrieve the messages. msg = MessageQueue1.GetAllMessages() ' Clear the current contents of the list. Me.ListBox1.Items.Clear() ' Display the results. For i = 0 To msg.Length - 1 Me.ListBox1.Items.Add(msg(i).Label) Next End Sub
private void button1_Click(System.Object sender, System.EventArgs e) { messageQueue1.Path = ".\\MyQueue"; System.Messaging.Message[] msg; // Retrieve the messages. msg = messageQueue1.GetAllMessages(); // Clear the current contents of the list. this.listBox1.Items.Clear(); // Display the results. for (int i = 0; i < msg.Length; i++) { this.listBox1.Items.Add(msg[i].Label); } }
Este exemplo de código também está disponível como um trecho de código IntelliSense.No selecionador de trecho de código, ele está localizado em Windows Brazilian OS > filas de mensagens.Para obter mais informações, consulte Como: Inserir trechos em seu Código (Visual Basic).
Para recuperar uma lista dinâmica de mensagens
Criar uma instância do MessageQueue componente e conjunto seus Path propriedade para a fila à qual deseja fazer referência. Para obter mais informações, consulte Como: Criar instâncias de componentes do MessageQueue.
Observação: Se você tiver criado seu componente de Gerenciador de servidores, the Path propriedade é definida automaticamente para o caminho da fila para essa fila.
Criar um MessageEnumerator objeto para manter os resultados da consulta.
Chamar o GetEnumerator método na MessageQueue classe.
Atribuir os resultados para o MessageEnumerator objeto. Seu código pode ter esta aparência:
Dim mq As New System.Messaging.MessageQueue(".\MyQueue") Dim msgEnum As System.Messaging.MessageEnumerator msgEnum = CType(mq.GetMessageEnumerator2, System.Messaging.MessageEnumerator)
System.Messaging.MessageQueue mq = new System.Messaging.MessageQueue(); System.Messaging.MessageEnumerator msgEnum; mq.Path = @".\MyQueue"; msgEnum = (System.Messaging.MessageEnumerator)(mq.GetMessageEnumerator2());