Lire en anglais

Partager via


MessageQueue.Close Méthode

Définition

Libère toutes les ressources allouées par MessageQueue.

C#
public void Close ();

Exemples

L’exemple de code suivant ferme une file d’attente Message Queuing.

C#
using System;
using System.Messaging;

namespace MyProject
{

    /// <summary>
    /// Provides a container class for the example.
    /// </summary>
    public class MyNewQueue
    {

        //**************************************************
        // Provides an entry point into the application.
        //	
        // This example closes a queue and frees its
        // resources.
        //**************************************************

        public static void Main()
        {
            // Create a new instance of the class.
            MyNewQueue myNewQueue = new MyNewQueue();

            // Send a message to a queue.
            myNewQueue.SendMessage();

            // Receive a message from a queue.
            myNewQueue.ReceiveMessage();

            return;
        }

        //**************************************************
        // Sends a message to a queue.
        //**************************************************
        
        public void SendMessage()
        {
            // Connect to a queue on the local computer.
            MessageQueue myQueue = new MessageQueue(".\\myQueue");

            // Send a message to the queue.
            myQueue.Send("My message data1.");
            
            // Explicitly release resources.
            myQueue.Close();

            // Attempt to reacquire resources.
            myQueue.Send("My message data2.");

            return;
        }

        //**************************************************
        // Receives a message from a queue.
        //**************************************************
        
        public  void ReceiveMessage()
        {
            // Connect to the a on the local computer.
            MessageQueue myQueue = new MessageQueue(".\\myQueue");

            // Set the formatter to indicate body contains an Order.
            myQueue.Formatter = new XmlMessageFormatter(new Type[]
                {typeof(String)});
            
            try
            {
                // Receive and format the message.
                Message myMessage1 = myQueue.Receive();
                Message myMessage2 = myQueue.Receive();
            }
            
            catch (MessageQueueException)
            {
                // Handle sources of any MessageQueueException.
            }

            // Catch other exceptions as necessary.

            finally
            {
                // Free resources.
                myQueue.Close();
            }

            return;
        }
    }
}

Remarques

Close libère toutes les ressources associées à un MessageQueue, y compris les ressources partagées, le cas échéant. Le système récupère automatiquement ces ressources si elles sont toujours disponibles, par exemple lorsque vous appelez la Send(Object) méthode , comme dans le code C# suivant.

C#
myMessageQueue.Send("Text 1.");
myMessageQueue.Close();
myMessageQueue.Send("Text 2."); //Resources are re-acquired.

Lorsque vous appelez Close, toutes les MessageQueue propriétés qui accèdent directement à la file d’attente Message Queuing sont effacées. , PathDefaultPropertiesToSend, Formatteret MessageReadPropertyFilter restent tous tels qu’ils étaient.

Close ne libère pas toujours les handles de lecture et d’écriture dans une file d’attente, car ils peuvent être partagés. Vous pouvez effectuer l’une des étapes suivantes pour vous assurer que Close libère les handles de lecture et d’écriture dans une file d’attente :

Vous devez appeler Close pour une file d’attente avant de supprimer la file d’attente sur le serveur Message Queuing. Sinon, les messages envoyés à la file d’attente peuvent lever des exceptions ou apparaître dans la file d’attente de lettres mortes.

Le tableau suivant indique si cette méthode est disponible dans différents modes de groupe de travail.

Mode groupe de travail Disponible
Ordinateur local Oui
Ordinateur local et nom de format direct Oui
Ordinateur distant Oui
Ordinateur distant et nom de format direct Oui

S’applique à

Produit Versions
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1