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.EndPeek-Methode: (IAsyncResult)

 

Veröffentlicht: Oktober 2016

Schließt den angegebenen asynchronen Peek-Vorgang.

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

public Message EndPeek(
	IAsyncResult asyncResult
)

Parameter

asyncResult
Type: System.IAsyncResult

Die IAsyncResult die zum Abschluss des asynchronen Peek-Vorgangs identifiziert und über das das Endergebnis abgerufen.

Rückgabewert

Type: System.Messaging.Message

Die Message den abgeschlossenen asynchronen Vorgang zugeordnet.

Exception Condition
ArgumentNullException

Der asyncResult-Parameter ist null.

ArgumentException

Die Syntax der asyncResult -Parameter ist ungültig.

MessageQueueException

Fehler beim Zugreifen auf eine Message Queuing-Methode.

Wenn die PeekCompleted -Ereignis ausgelöst, EndPeek(IAsyncResult) schließt den Vorgang ab, die von initiiert wurde der BeginPeek aufrufen. Dazu EndPeek(IAsyncResult) sieht die Meldung.

BeginPeek kann einen Timeout angeben der PeekCompleted Ereignis ausgelöst wird, wenn das Timeout auftritt, bevor eine Nachricht in der Warteschlange angezeigt wird. Wenn ein Timeout auftritt, ohne dass eine Meldung in der Warteschlange, ein nachfolgender Aufruf von eingehenden EndPeek(IAsyncResult) löst eine Ausnahme aus.

EndPeek(IAsyncResult) wird verwendet, um die Nachricht zu lesen, die aufgrund der PeekCompleted Ereignis ausgelöst wird.

Wenn Sie zum asynchronen Einsehen von Nachrichten fortsetzen möchten, können Sie erneut aufrufen BeginPeek nach dem Aufruf von EndPeek(IAsyncResult).

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

Nein

Remotecomputer und direkter Formatname

Ja

Das folgende Codebeispiel erstellt einen Ereignishandler namens MyPeekCompleted, fügt es die PeekCompleted Ereignishandlerdelegaten und ruft BeginPeek einen asynchronen Lesevorgang in der Warteschlange zu initiieren, die unter dem Pfad ". \myQueue". Wenn ein PeekCompleted -Ereignis ausgelöst wird, wird im Beispiel die Meldung eingesehen und der Meldungstext auf dem Bildschirm. Das Beispiel ruft dann BeginPeek erneut aus, um einen neuen asynchronen Peek-Vorgang zu initiieren.

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 performs asynchronous peek operation
		// processing.
		//**************************************************

		public static void Main()
		{
			// Create an instance of MessageQueue. Set its formatter.
			MessageQueue myQueue = new MessageQueue(".\\myQueue");
			myQueue.Formatter = new XmlMessageFormatter(new Type[]
				{typeof(String)});

			// Add an event handler for the PeekCompleted event.
			myQueue.PeekCompleted += new 
				PeekCompletedEventHandler(MyPeekCompleted);

			// Begin the asynchronous peek operation.
			myQueue.BeginPeek();

			// Do other work on the current thread.

			return;
		}


		//**************************************************
		// Provides an event handler for the PeekCompleted
		// event.
		//**************************************************

		private static void MyPeekCompleted(Object source, 
			PeekCompletedEventArgs asyncResult)
		{
			// Connect to the queue.
			MessageQueue mq = (MessageQueue)source;

			// End the asynchronous peek operation.
			Message m = mq.EndPeek(asyncResult.AsyncResult);

			// Display message information on the screen.
			Console.WriteLine("Message: " + (string)m.Body);

			// Restart the asynchronous peek operation.
			mq.BeginPeek();

			return; 
		}
	}
}

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