エクスポート (0) 印刷
すべて展開

ReceiveCompletedEventArgs クラス

ReceiveCompleted イベントのデータを提供します。非同期の受信操作がイベント ハンドラを呼び出すと、このクラスのインスタンスがハンドラに渡されます。

名前空間: System.Messaging
アセンブリ: System.Messaging (system.messaging.dll 内)

public class ReceiveCompletedEventArgs : EventArgs
public class ReceiveCompletedEventArgs extends EventArgs
public class ReceiveCompletedEventArgs extends EventArgs
適用できません。

イベント通知を使ってキューからメッセージを非同期に受信するときは、そのメッセージ処理を行うメソッドを作成する必要があります。その場合は、非同期処理を開始するために BeginReceive を呼び出す必要があります。メッセージが受信されるときに、ReceiveCompleted イベントを通じてアプリケーションに通知が送信されます。イベント ハンドラを呼び出すイベント デリゲートに、ReceiveCompletedEventArgs のインスタンスが渡されます。ReceiveCompleted イベントに関連付けられているデータは、デリゲートの AsyncResult パラメータに格納されます。

イベントの完了を通知させる方法には、イベント通知とコールバックの 2 種類があります。ReceiveCompletedEventArgs はイベント通知でだけ使われます。コールバックとイベント通知の比較については、MSDN ライブラリの「イベントによる通知とコールバックによる通知」を参照してください。

ReceiveCompletedEventArgs は、Message メンバを通じて非同期の受信操作の最終処理を開始したメッセージへのアクセスを実現します。これはメッセージへの代替アクセスであり、MessageQueue.EndReceive を呼び出す場合とほとんど動作は同じです。

ReceiveCompleted イベントのイベント ハンドラを作成し、ReceiveCompletedEventHandler を使用してそのハンドラをイベント デリゲートに関連付けるコード例を次に示します。このイベント ハンドラ (MyReceiveCompleted) は、キューからメッセージを受信してその本文を画面に書き込みます。

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

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

System.Object
   System.EventArgs
    System.Messaging.ReceiveCompletedEventArgs

この型の public static (Visual Basicでは共有) メンバはすべて,スレッド セーフです。インスタンス メンバの場合は,スレッド セーフであるとは限りません。

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

Microsoft .NET Framework 3.0 は Windows Vista,Microsoft Windows XP SP2,および Windows Server 2003 SP1 でサポートされています。

.NET Framework

サポート対象 : 3.0,2.0,1.1,1.0

.NET Compact Framework

サポート対象 : 2.0

コミュニティの追加

追加
表示:
© 2015 Microsoft