Freigeben über


ReceiveCompletedEventArgs-Klasse

Stellt Daten für das ReceiveCompleted-Ereignis bereit. Beim Aufruf eines Ereignishandlers durch eine asynchrone Receive-Methode wird eine Instanz dieser Klasse an den Handler übergeben.

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

Syntax

'Declaration
Public Class ReceiveCompletedEventArgs
    Inherits EventArgs
'Usage
Dim instance As ReceiveCompletedEventArgs
public class ReceiveCompletedEventArgs : EventArgs
public ref class ReceiveCompletedEventArgs : public EventArgs
public class ReceiveCompletedEventArgs extends EventArgs
public class ReceiveCompletedEventArgs extends EventArgs

Hinweise

Wenn Sie Ereignisbenachrichtigungen zum asynchronen Empfangen von Nachrichten aus einer Warteschlange verwenden, müssen Sie eine Methode erstellen, die die Nachrichtenverarbeitung übernimmt. Zum Starten der asynchronen Verarbeitung muss im Code BeginReceive aufgerufen werden. Nach dem Empfang einer Nachricht wird die Anwendung durch das ReceiveCompleted-Ereignis benachrichtigt. Eine Instanz von ReceiveCompletedEventArgs wird an den Ereignisdelegaten übergeben, der den Ereignishandler aufruft. Die dem ReceiveCompleted-Ereignis zugeordneten Daten sind im AsyncResult-Parameter des Delegaten enthalten.

Es gibt zwei Benachrichtigungsmöglichkeiten bei Abschluss der Ereignisbehandlung: die Ereignisbenachrichtigung und Rückrufe. ReceiveCompletedEventArgs wird nur bei der Ereignisbenachrichtigung verwendet. Weitere Informationen über Rückrufe und die Ereignisbenachrichtigung finden Sie in MSDN unter "Events vs. Callbacks" (nur auf Englisch verfügbar).

ReceiveCompletedEventArgs ermöglicht einen Zugriff auf die Meldung, die den Abschluss der asynchronen Receive-Methode initiiert hat, über den Message-Member. Es handelt sich hierbei um einen alternativen Nachrichtenzugriff (ähnlich einem Aufruf von MessageQueue.EndReceive).

Beispiel

Im folgenden Beispiel wird ein Handler für das ReceiveCompleted-Ereignis erstellt und dem Ereignisdelegaten über ReceiveCompletedEventHandler zugeordnet. Der Ereignishandler MyReceiveCompleted empfängt eine Meldung aus der Warteschlange und gibt deren Text auf dem Bildschirm aus.

Imports System
Imports System.Messaging

Public Class MyNewQueue


        '
        ' Provides an entry point into the application.
        '        
        ' This example performs asynchronous receive 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 ReceiveCompleted event.
            AddHandler myQueue.ReceiveCompleted, AddressOf _
                MyReceiveCompleted

            ' Begin the asynchronous receive operation.
            myQueue.BeginReceive()

            ' Do other work on the current thread.

            Return

        End Sub 'Main


        '
        ' Provides an event handler for the ReceiveCompleted
        ' event.
        '

        Private Shared Sub MyReceiveCompleted(ByVal [source] As _
            [Object], ByVal asyncResult As ReceiveCompletedEventArgs)

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

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

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

            ' Restart the asynchronous Receive operation.
            mq.BeginReceive()

            Return

        End Sub 'MyReceiveCompleted

End Class 'MyNewQueue
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 receive 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 ReceiveCompleted event.
            myQueue.ReceiveCompleted += new 
                ReceiveCompletedEventHandler(MyReceiveCompleted);
            
            // Begin the asynchronous receive operation.
            myQueue.BeginReceive();
            
            // Do other work on the current thread.

            return;
        }


        //**************************************************
        // Provides an event handler for the ReceiveCompleted
        // event.
        //**************************************************
        
        private static void MyReceiveCompleted(Object source, 
            ReceiveCompletedEventArgs asyncResult)
        {
            // Connect to the queue.
            MessageQueue mq = (MessageQueue)source;

            // End the asynchronous Receive operation.
            Message m = mq.EndReceive(asyncResult.AsyncResult);

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

            // Restart the asynchronous Receive operation.
            mq.BeginReceive();
            
            return; 
        }
    }
}
#using <system.dll>
#using <system.messaging.dll>

using namespace System;
using namespace System::Messaging;
ref class MyNewQueue
{
public:

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

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

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

      // Restart the asynchronous Receive operation.
      mq->BeginReceive();
      return;
   }
};


//*************************************************
// Provides an entry point into the application.
//         
// This example performs asynchronous receive operation
// processing.
//*************************************************
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 ReceiveCompleted event.
   myQueue->ReceiveCompleted += gcnew ReceiveCompletedEventHandler( MyNewQueue::MyReceiveCompleted );

   // Begin the asynchronous receive operation.
   myQueue->BeginReceive();

   // Do other work on the current thread.
   return 0;
}
package MyProject;

import System.*;
import System.Messaging.*;

/// <summary>
/// Provides a container class for the example.
/// </summary>
public class MyNewQueue
{
    //**************************************************
    // Provides an entry point into the application.
    //         
    // This example performs asynchronous receive operation
    // processing.
    //**************************************************
    public static void main(String[] args)
    {
        // Create an instance of MessageQueue. Set its formatter.
        MessageQueue myQueue = new MessageQueue(".\\myQueue");
        myQueue.set_Formatter(new XmlMessageFormatter(new Type[]
            { String.class.ToType() }));
        // Add an event handler for the ReceiveCompleted event.
        myQueue.add_ReceiveCompleted(new ReceiveCompletedEventHandler
            (MyReceiveCompleted));
        // Begin the asynchronous receive operation.
        myQueue.BeginReceive();
        // Do other work on the current thread.
        return;
    } //main

    //**************************************************
    // Provides an event handler for the ReceiveCompleted
    // event.
    //**************************************************
    private static void MyReceiveCompleted(Object source,
        ReceiveCompletedEventArgs asyncResult)
    {
        // Connect to the queue.
        MessageQueue mq = (MessageQueue)source;
        // End the asynchronous Receive operation.
        Message m = mq.EndReceive(asyncResult.get_AsyncResult());
        // Display message information on the screen.
        Console.WriteLine("Message: " + (String)(m.get_Body()));
        // Restart the asynchronous Receive operation.
        mq.BeginReceive();
        return;
    } //MyReceiveCompleted
} //MyNewQueue

Vererbungshierarchie

System.Object
   System.EventArgs
    System.Messaging.ReceiveCompletedEventArgs

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0

Siehe auch

Referenz

ReceiveCompletedEventArgs-Member
System.Messaging-Namespace
MessageQueue-Klasse
ReceiveCompletedEventHandler
MessageQueue.ReceiveCompleted-Ereignis
BeginReceive
EndReceive
Message-Klasse