Partager via


Comment : récupérer des files d'attente

Mise à jour : novembre 2007

Vous pouvez recourir à des mécanismes de récupération statiques ou dynamiques pour récupérer une liste de files d'attente. Lorsque vous récupérez une liste statique de files d'attente, le système retourne un objet MessageQueue avec les résultats de votre requête. Lorsque vous récupérez une liste dynamique de files d'attente, le système retourne un objet MessageQueueEnumerator avec les résultats de votre requête.

À la différence de MessageEnumerator, qui retourne les messages dans l'ordre de leur affichage dans la file d'attente, MessageQueueEnumerator ne retourne pas les files d'attente dans un ordre précis. En effet, il n'y a pas d'ordre défini pour les files d'attente d'un réseau, c'est-à-dire qu'elles ne sont pas classées par ordinateur, étiquette ou autre critère défini par l'utilisateur. Vous pouvez placer le curseur sur la première file d'attente de l'énumération en appelant la méthode MoveNext. Après que l'énumérateur a été initialisé, vous pouvez utiliser MoveNext pour accéder aux autres files d'attente.

Il est impossible de revenir en arrière avec MessageQueueEnumerator. Un curseur autorise uniquement un déplacement vers l'avant dans l'énumération des files d'attente. Toutefois, vous pouvez appeler la méthode Reset pour réinitialiser l'énumération et replacer le curseur en début de liste. Dans la mesure où l'énumérateur est dynamique, il peut accéder à une file d'attente qui est ajoutée plus loin dans la liste que la position actuelle du curseur. Vous ne pouvez accéder à une file d'attente insérée avant la position actuelle du curseur sans d'abord appeler Reset.

Dans la mesure où les méthodes GetPublicQueues, GetPrivateQueuesByMachine et GetMessageQueueEnumerator sont statiques, vous n'avez pas besoin de créer une instance de la classe MessageQueue avant d'appeler la méthode.

Pour récupérer une liste de files d'attente publiques ou privées

  1. Créez un tableau de type MessageQueue destiné à recueillir les résultats de votre requête.

  2. Appelez la méthode appropriée sur la classe MessageQueue :

    • Pour récupérer toutes les files d'attente publiques sans critères, appelez la méthode GetPublicQueues.

    • Pour récupérer des files d'attente publiques avec des critères, affectez la valeur appropriée au paramètre Criteria et appelez la méthode GetPrivateQueuesByMachine.

    • Pour récupérer uniquement les files d'attente publiques qui partagent un GUID de catégorie, appelez la méthode GetPublicQueuesByCategory et spécifiez le GUID de catégorie comme paramètre.

    • Pour récupérer uniquement les files d'attente publiques qui partagent une étiquette, appelez la méthode GetPublicQueuesByLabel et spécifiez l'étiquette comme paramètre.

    • Pour récupérer uniquement les files d'attente publiques d'un ordinateur spécifique, appelez la méthode GetPublicQueuesByMachine et spécifiez le nom de l'ordinateur comme paramètre.

  3. Assignez les résultats au tableau.

    Dans l'exemple suivant, le code indique comment utiliser une zone de liste pour afficher l'étiquette de toutes les files d'attente publiques récupérées de l'ordinateur local :

    Private Sub button1_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles button1.Click
        Dim mqlist() As System.Messaging.MessageQueue
        Dim i As Integer
        ' Retrieve queues on the local machine.
        mqlist = System.Messaging.MessageQueue.GetPublicQueuesByMachine(".")
        ' Clear the current contents of the list.
        Me.ListBox1.Items.Clear()
        ' Display the results.
        For i = 0 To mqlist.Length - 1
            Me.ListBox1.Items.Add(mqlist(i).Path)
        Next
    End Sub
    
     private void button1_Click(System.Object sender, System.EventArgs e)
        {
            System.Messaging.MessageQueue[] mqlist;
            // Retrieve public queues.
            mqlist = System.Messaging.MessageQueue.GetPublicQueuesByMachine(
               ".");
            // Clear the current contents of the list.
            this.listBox1.Items.Clear();
            // Display the results.
            for (int i = 0; i < mqlist.Length; i++)
            {
                this.listBox1.Items.Add(mqlist[i].Path);
            }
        }
    

    Cet exemple de code est également disponible sous forme d'extrait de code IntelliSense Visual Basic. Dans le sélecteur d'extraits de code, il se trouve dans Système d'exploitation Windows > Files d'attente de messages. Pour plus d'informations, consultez Comment : insérer des extraits de code dans votre code (Visual Basic).

Pour récupérer une liste dynamique de files d'attente

  1. Créez un objet MessageQueueEnumerator destiné à recueillir les résultats de votre requête.

  2. Appelez la méthode GetMessageQueueEnumerator sur la classe MessageQueue.

  3. Pour récupérer un sous-ensemble de files d'attente sur le réseau, affectez la valeur appropriée au paramètre MessageQueueCriteria.

  4. Affectez les résultats à l'objet MessageQueueEnumerator que vous avez créé. Votre code se présente comme suit :

    Dim mqEnum As System.Messaging.MessageQueueEnumerator
    mqEnum = System.Messaging.MessageQueue.GetMessageQueueEnumerator()
    
         System.Messaging.MessageQueueEnumerator mqEnum;
            mqEnum = System.Messaging.MessageQueue.GetMessageQueueEnumerator();
    

Voir aussi

Tâches

Comment : récupérer des messages

Concepts

Collections de messages et de files d'attente