Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

MessageQueue.Close-Methode: ()

 

Veröffentlicht: Oktober 2016

Gibt alle von zugeordnete Ressourcen frei, die MessageQueue.

Namespace:   System.Messaging
Assembly:  System.Messaging (in System.Messaging.dll)

public void Close()

Close Gibt alle zugeordneten Ressourcen frei eine MessageQueue, einschließlich freigegebene Ressourcen bei Bedarf. Das System automatisch wieder zugewiesen diese Ressourcen stehen weiterhin zur Verfügung, z. B. beim Aufrufen der Send(Object) Methode, wie im folgenden C#-Code.

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

Beim Aufruf von Close, dass alle MessageQueue Eigenschaften, die direkt auf die Message Queuing-Warteschlange zugreifen werden gelöscht. Die Path, DefaultPropertiesToSend, Formatter, und MessageReadPropertyFilter alle bleiben, wie sie wären.

Close nicht immer frei lesen und Handles an eine Warteschlange geschrieben werden, da sie gemeinsam genutzt werden können. Sie können dann alle der folgenden Schritte aus, um sicherzustellen, dass Close die Lese- und Schreibhandles an eine Warteschlange freigegeben:

Rufen Sie Close für eine Warteschlange, bevor Sie die Warteschlange auf dem Message Queuing-Server löschen. Andernfalls konnte an die Warteschlange gesendete Nachrichten Ausnahmen auslösen oder in der Warteschlange für unzustellbare Nachrichten angezeigt werden.

Die folgende Tabelle zeigt, ob diese Methode in verschiedenen Modi für die Arbeitsgruppe ist.

Im Arbeitsgruppenmodus

Verfügbar

Lokaler computer

Ja

Lokaler Computer und direkten Formatnamen

Ja

Remote-computer

Ja

Remotecomputer und direkter Formatname

Ja

Im folgenden Codebeispiel wird eine Message Queuing-Warteschlange geschlossen.

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;
		}
	}
}

.NET Framework
Verfügbar seit 1.1
Zurück zum Anfang
Anzeigen: