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.PeekCompleted-Ereignis

 

Veröffentlicht: Oktober 2016

Tritt auf, wenn eine Nachricht gelesen wird, ohne Sie aus der Warteschlange entfernt wird. Dies ist das Ergebnis des asynchronen Vorgangs, BeginPeek.

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

[MessagingDescriptionAttribute("MQ_PeekCompleted")]
public event PeekCompletedEventHandler PeekCompleted

BeginPeek wird bei der asynchronen Verarbeitung zum Auslösen verwendet das PeekCompleted -Ereignis, wenn eine Nachricht in der Warteschlange verfügbar ist.

EndPeek(IAsyncResult) Dient zum Abschließen des Vorgangs ausgelöst durch einen Aufruf von BeginPeek und zum Empfangen der Meldung bei der PeekCompleted -Ereignis wird ausgelöst.

Beim Erstellen eines PeekCompletedEventHandler-Delegaten bestimmen Sie die Methode für die Ereignisbehandlung. Um dem Ereignishandler das Ereignis zuzuordnen, fügen Sie dem Ereignis eine Instanz des Delegaten hinzu. Der Ereignishandler wird bei jedem Eintreten des Ereignisses aufgerufen, sofern der Delegat nicht entfernt wird. Weitere Informationen über Ereignishandlerdelegaten finden Sie unter NIB: Ereignisse und Delegaten.

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: