MessageQueue.EndPeek(IAsyncResult) Methode

Definition

Schließt den angegebenen asynchronen Vorschauvorgang ab.

public:
 System::Messaging::Message ^ EndPeek(IAsyncResult ^ asyncResult);
public System.Messaging.Message EndPeek(IAsyncResult asyncResult);
member this.EndPeek : IAsyncResult -> System.Messaging.Message
Public Function EndPeek (asyncResult As IAsyncResult) As Message

Parameter

asyncResult
IAsyncResult

Dies IAsyncResult identifiziert den asynchronen Vorschauvorgang, der abgeschlossen werden soll und aus dem ein Endergebnis abgerufen werden soll.

Gibt zurück

Der Message abgeschlossene asynchrone Vorgang zugeordnet.

Ausnahmen

Der asyncResult Parameter ist null.

Die Syntax des asyncResult Parameters ist ungültig.

Fehler beim Zugriff auf eine Message Queuing-Methode.

Beispiele

Das folgende Codebeispiel erstellt einen Ereignishandler mit dem Namen MyPeekCompleted, fügt ihn an den PeekCompleted Ereignishandlerdelegat an und ruft auf BeginPeek , um einen asynchronen Vorschauvorgang in der Warteschlange zu initiieren, die sich im Pfad ".\myQueue" befindet. Wenn ein PeekCompleted Ereignis ausgelöst wird, zeigt das Beispiel die Nachricht an und schreibt den Textkörper auf den Bildschirm. Anschließend wird erneut aufgerufen BeginPeek , um einen neuen asynchronen Vorschauvorgang zu initiieren.

#using <system.dll>
#using <system.messaging.dll>

using namespace System;
using namespace System::Messaging;

// This example performs asynchronous peek operation
// processing.
//*************************************************
ref class MyNewQueue
{
public:

   // Provides an event handler for the PeekCompleted
   // event.
   static void MyPeekCompleted( Object^ source, PeekCompletedEventArgs^ asyncResult )
   {
      // Connect to the queue.
      MessageQueue^ mq = dynamic_cast<MessageQueue^>(source);

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

      // Display message information on the screen.
      Console::WriteLine( "Message: {0}", static_cast<String^>(m->Body) );

      // Restart the asynchronous peek operation.
      mq->BeginPeek();
      return;
   }
};

// Provides an entry point into the application.
//         
int main()
{
   // Create an instance of MessageQueue. Set its formatter.
   MessageQueue^ myQueue = gcnew MessageQueue( ".\\myQueue" );
   array<Type^>^p = gcnew array<Type^>(1);
   p[ 0 ] = String::typeid;
   myQueue->Formatter = gcnew XmlMessageFormatter( p );

   // Add an event handler for the PeekCompleted event.
   myQueue->PeekCompleted += gcnew PeekCompletedEventHandler( MyNewQueue::MyPeekCompleted );

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

   // Do other work on the current thread.
   return 0;
}
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;
        }
    }
}
Imports System.Messaging





' Provides a container class for the example.
Public Class MyNewQueue



        ' Provides an entry point into the application.
        '		 
        ' This example performs asynchronous peek operation
        ' processing.


        Public Shared Sub Main()
            ' Create an instance of MessageQueue. Set its formatter.
            Dim myQueue As New MessageQueue(".\myQueue")
            myQueue.Formatter = New XmlMessageFormatter(New Type() _
                {GetType([String])})

            ' Add an event handler for the PeekCompleted event.
            AddHandler myQueue.PeekCompleted, AddressOf _
                MyPeekCompleted

            ' Begin the asynchronous peek operation.
            myQueue.BeginPeek()

            ' Do other work on the current thread.
            Return
        End Sub


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

        Private Shared Sub MyPeekCompleted(ByVal [source] As _
            [Object], ByVal asyncResult As PeekCompletedEventArgs)

            ' Connect to the queue.
            Dim mq As MessageQueue = CType([source], MessageQueue)

            ' End the asynchronous peek operation.
            Dim m As Message = mq.EndPeek(asyncResult.AsyncResult)

            ' Display message information on the screen.
            Console.WriteLine(("Message: " + CStr(m.Body)))

            ' Restart the asynchronous peek operation.
            mq.BeginPeek()

            Return

        End Sub

End Class

Hinweise

Wenn das PeekCompleted Ereignis ausgelöst wird, EndPeek(IAsyncResult) wird der vom Aufruf initiierte Vorgang abgeschlossen BeginPeek . EndPeek(IAsyncResult) Dazu wird die Nachricht in der Vorschau angezeigt.

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

EndPeek(IAsyncResult) wird verwendet, um die Nachricht zu lesen, die dazu führte, dass das PeekCompleted Ereignis ausgelöst wurde.

Wenn Sie weiterhin asynchrone Vorschaunachrichten anzeigen möchten, können Sie nach dem Aufrufen EndPeek(IAsyncResult)erneut aufrufenBeginPeek.

In der folgenden Tabelle wird gezeigt, ob diese Methode in verschiedenen Arbeitsgruppenmodi verfügbar ist.

Arbeitsgruppenmodus Available
Lokaler Computer Ja
Name des lokalen Computers und des direkten Formats Ja
Remotecomputer No
Name des Remotecomputers und des direkten Formats Ja

Gilt für:

Weitere Informationen