MessageEnumerator MessageEnumerator MessageEnumerator MessageEnumerator Class

定義

メッセージ キュー内のメッセージを列挙するための前方向カーソルを提供します。Provides a forward-only cursor to enumerate through messages in a message queue.

public ref class MessageEnumerator : MarshalByRefObject, IDisposable, System::Collections::IEnumerator
public class MessageEnumerator : MarshalByRefObject, IDisposable, System.Collections.IEnumerator
type MessageEnumerator = class
    inherit MarshalByRefObject
    interface IEnumerator
    interface IDisposable
Public Class MessageEnumerator
Inherits MarshalByRefObject
Implements IDisposable, IEnumerator
継承
MessageEnumeratorMessageEnumeratorMessageEnumeratorMessageEnumerator
実装

次の例は、キューにメッセージの動的リストを取得しのすべてのメッセージのカウント、Priorityプロパティに設定MessagePriority.Lowestします。The following example gets a dynamic list of messages in a queue and counts all messages with the Priority property set to MessagePriority.Lowest.

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

using namespace System;
using namespace System::Messaging;
ref class MyNewQueue
{
public:
   void CountLowestPriority()
   {
      
      // Holds the count of Lowest priority messages.
      UInt32 numberItems = 0;
      
      // Connect to a queue.
      MessageQueue^ myQueue = gcnew MessageQueue( ".\\myQueue" );
      
      // Get a cursor into the messages in the queue.
      MessageEnumerator^ myEnumerator = myQueue->GetMessageEnumerator();
      
      // Specify that the messages's priority should be read.
      myQueue->MessageReadPropertyFilter->Priority = true;
      
      // Move to the next message and examine its priority.
      while ( myEnumerator->MoveNext() )
      {
         
         // Increase the count if priority is Lowest.
         if ( myEnumerator->Current->Priority == MessagePriority::Lowest )
                  numberItems++;
      }

      
      // Display final count.
      Console::WriteLine( "Lowest priority messages: {0}", numberItems );
      return;
   }

};

int main()
{
   
   // Create a new instance of the class.
   MyNewQueue^ myNewQueue = gcnew MyNewQueue;
   
   // Output the count of Lowest priority messages.
   myNewQueue->CountLowestPriority();
   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 uses a cursor to step through the
		// messages in a queue and counts the number of 
		// Lowest priority messages.
		//**************************************************

		public static void Main()
		{
			// Create a new instance of the class.
			MyNewQueue myNewQueue = new MyNewQueue();

			// Output the count of Lowest priority messages.
			myNewQueue.CountLowestPriority();
						
			return;
		}


		//**************************************************
		// Iterates through messages in a queue and examines
		// their priority.
		//**************************************************
		
		public void CountLowestPriority()
		{
			// Holds the count of Lowest priority messages.
			uint numberItems = 0;

			// Connect to a queue.
			MessageQueue myQueue = new MessageQueue(".\\myQueue");
	
			// Get a cursor into the messages in the queue.
			MessageEnumerator myEnumerator = 
				myQueue.GetMessageEnumerator();

			// Specify that the messages's priority should be read.
			myQueue.MessageReadPropertyFilter.Priority = true;

			// Move to the next message and examine its priority.
			while(myEnumerator.MoveNext())
			{
				// Increase the count if priority is Lowest.
				if(myEnumerator.Current.Priority == 
					MessagePriority.Lowest)
					
					numberItems++;
			}

			// Display final count.
			Console.WriteLine("Lowest priority messages: " + 
				numberItems.ToString());
			
			return;
		}
	}
}
Imports System
Imports System.Messaging

Public Class MyNewQueue


        
        ' Provides an entry point into the application.
        '		 
        ' This example uses a cursor to step through the
        ' messages in a queue and counts the number of 
        ' Lowest priority messages.
        

        Public Shared Sub Main()

            ' Create a new instance of the class.
            Dim myNewQueue As New MyNewQueue()

            ' Output the count of Lowest priority messages.
            myNewQueue.CountLowestPriority()

            Return

        End Sub 'Main


        
        ' Iterates through messages in a queue and examines
        ' their priority.
        

        Public Sub CountLowestPriority()

            ' Holds the count of Lowest priority messages.
            Dim numberItems As Int32 = 0

            ' Connect to a queue.
            Dim myQueue As New MessageQueue(".\myQueue")

            ' Get a cursor into the messages in the queue.
            Dim myEnumerator As MessageEnumerator = _
                myQueue.GetMessageEnumerator()

            ' Specify that the messages's priority should be read.
            myQueue.MessageReadPropertyFilter.Priority = True

            ' Move to the next message and examine its priority.
            While myEnumerator.MoveNext()

                ' Increase the count if the priority is Lowest.
                If myEnumerator.Current.Priority = _
                    MessagePriority.Lowest Then
                    numberItems += 1
                End If

            End While

            ' Display final count.
            Console.WriteLine(("Lowest priority messages: " + _
                numberItems.ToString()))

            Return

        End Sub 'CountLowestPriority

End Class 'MyNewQueue

注釈

使用MessageEnumeratorキュー内のメッセージの動的な対話のためです。Use MessageEnumerator for dynamic interaction with messages in a queue. メソッドで使用できる、MessageQueueクラスは、いずれかを返すことができます、MessageEnumeratorキューまたはキューの指定された時点のスナップショットのある時点でのコピーを含む配列内のメッセージの動的リストを指す、指定されたメソッドが呼び出されました。Methods available through the MessageQueue class can return either a MessageEnumerator pointing to a dynamic list of messages in the queue, or an array that contains a copy at a given instant - a snapshot - of the queue at the time the specified method was called.

列挙子では、静的なスナップショットとは異なり、コレクションを変更できます。Unlike a static snapshot, an enumerator allows you to modify the collection. 使用して、 MessageEnumerator、キューからメッセージを削除して、変更がキューにすぐに反映されます。Using a MessageEnumerator, you can remove messages from the queue, and the change is immediately reflected in the queue.

列挙子、キューを照会したときに、メッセージをキューから削除されません。An enumerator does not remove the messages from the queue when it queries the queue. 現在のカーソル位置にあるメッセージに関する情報が返されますが、メッセージはキューにそのままです。It returns information about the message at the current cursor position, but it leaves the message in the queue.

AMessageEnumeratorカーソル、動的なリストの先頭に初期化します。A MessageEnumerator is a cursor, initialized to the head of a dynamic list. 一覧の順序は、メッセージの優先順位に従って、キュー内のメッセージの順序と同じです。The list order is the same as the order of the messages in the queue, according to message priority. キューの最初のメッセージを呼び出すことによって、カーソルを移動することができますMoveNextします。You can move the cursor to the first message in the queue by calling MoveNext. 使用することができます、列挙子が初期化された後MoveNextステップ前進して残りのメッセージにします。After the enumerator has been initialized, you can use MoveNext to step forward through the remaining messages. メッセージがタイムアウトに渡すことによって使用可能になるまで待機するかどうかを指定することができます、MoveNextメソッド。You can specify whether to wait for a message to become available by passing a timeout into the MoveNext method.

列挙子は動的であるため (たとえば、ため低優先度)、カーソルの現在の位置より後に追加するメッセージは、列挙子によってアクセスできます。Because the enumerator is dynamic, a message that is appended beyond the cursor's current position (for example, due to low priority), can be accessed by the enumerator. 現在のカーソル位置にアクセスすることはできません前に挿入されているメッセージ。A message that is inserted before the cursor's current position cannot be accessed. 前に戻ることはできません、MessageEnumeratorします。It is not possible to step backward with a MessageEnumerator. カーソルは、順方向専用の移動をできます。A cursor allows forward-only movement. Resetメソッドでは、キューの先頭にカーソルを配置することができます。The Reset method enables you to place the cursor back at the beginning of the queue.

インスタンスMessageEnumeratorを特定のキューは独立して動作します。Instances of MessageEnumerator for a given queue work independently. 2 つ作成することができますMessageEnumeratorインスタンスが同じキューに適用されます。You can create two MessageEnumerator instances that apply to the same queue. 変更を 1 つMessageEnumerator2 つ目の列挙子が 1 つ目の前に配置されている場合に、2 つ目の列挙子で、キュー内のメッセージにを直ちに反映されませんは。The changes that one MessageEnumerator makes to the messages in the queue will be reflected immediately in a second enumerator if the second enumerator is positioned before the first. ただし、2 つの列挙子が同じ位置を持っており、その位置にあるメッセージを削除しますうち 1 つ場合、例外がスローされます、他の列挙子の値を取得しようとすると、Current削除メッセージのプロパティ。However, if two enumerators have the same position and one of them removes the message at that position, an exception is thrown if the other enumerator attempts to get the value of the Current property on the now-deleted message.

注意

インスタンスを作成する場合MessageQueueMessageQueue.DenySharedReceive設定true、他のアプリケーションは変更できません、列挙子内のメッセージをキューに接続しているときにします。If you create an instance of MessageQueue with MessageQueue.DenySharedReceive set to true, no other application can modify the messages in your enumerator while you have the connection to the queue.

プロパティ

Current Current Current Current

その列挙子が指している現在の Message を取得します。Gets the current Message that this enumerator points to.

CursorHandle CursorHandle CursorHandle CursorHandle

キュー内でメッセージを参照するために使われるネイティブなメッセージ キュー カーソル ハンドルを取得します。Gets the native Message Queuing cursor handle used to browse messages in the queue.

メソッド

Close() Close() Close() Close()

列挙子と関連付けられたリソースを解放します。Frees the resources associated with the enumerator.

CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type)

リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Inherited from MarshalByRefObject)
Dispose() Dispose() Dispose() Dispose()

MessageEnumerator によって使用されているすべてのリソースを解放します。Releases all resources used by the MessageEnumerator.

Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

MessageEnumerator によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。Releases the unmanaged resources used by the MessageEnumerator and optionally releases the managed resources.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
Finalize() Finalize() Finalize() Finalize()

列挙子に保持されているリソースを解放します。Releases the resources held by the enumerator.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetLifetimeService() GetLifetimeService() GetLifetimeService() GetLifetimeService()

対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService()

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。Obtains a lifetime service object to control the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean)

現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。Creates a shallow copy of the current MarshalByRefObject object.

(Inherited from MarshalByRefObject)
MoveNext() MoveNext() MoveNext() MoveNext()

キュー内の次のメッセージに列挙子を進めます (そのメッセージが現在使用できる場合)。Advances the enumerator to the next message in the queue, if one is currently available.

MoveNext(TimeSpan) MoveNext(TimeSpan) MoveNext(TimeSpan) MoveNext(TimeSpan)

キュー内の次のメッセージに列挙子を進めます。Advances the enumerator to the next message in the queue. 列挙子がキューの最後に位置しているときは、MoveNext() は、メッセージが使用できるようになるか指定のタイムアウト時間が経過するまで待機します。If the enumerator is positioned at the end of the queue, MoveNext() waits until a message is available or the given timeout expires.

RemoveCurrent() RemoveCurrent() RemoveCurrent() RemoveCurrent()

トランザクション キューまたは非トランザクション キューから現在のメッセージを削除し、そのメッセージを呼び出し元アプリケーションに返します。Removes the current message from a transactional or non-transactional queue and returns the message to the calling application. メッセージがキューに到達するまでのタイムアウトは指定されていません。There is no timeout specified for a message to arrive in the queue.

RemoveCurrent(MessageQueueTransaction) RemoveCurrent(MessageQueueTransaction) RemoveCurrent(MessageQueueTransaction) RemoveCurrent(MessageQueueTransaction)

トランザクション キューから現在のメッセージを削除し、そのメッセージを呼び出し元アプリケーションに返します。Removes the current message from a transactional queue and returns the message to the calling application. メッセージがキューに到達するまでのタイムアウトは指定されていません。There is no timeout specified for a message to arrive in the queue.

RemoveCurrent(MessageQueueTransactionType) RemoveCurrent(MessageQueueTransactionType) RemoveCurrent(MessageQueueTransactionType) RemoveCurrent(MessageQueueTransactionType)

キューから現在のメッセージを削除し、そのメッセージを呼び出し元アプリケーションに返します。Removes the current message from a queue and returns the message to the calling application. メッセージがキューに到達するまでのタイムアウトは指定されていません。There is no timeout specified for a message to arrive in the queue.

RemoveCurrent(TimeSpan) RemoveCurrent(TimeSpan) RemoveCurrent(TimeSpan) RemoveCurrent(TimeSpan)

キューから現在のメッセージを削除し、そのメッセージを呼び出し元アプリケーションに返します。Removes the current message from the queue and returns the message to the calling application. 削除するメッセージがある場合、メソッドはすぐにメッセージを返します。If there is a message to remove, the method returns it immediately. 削除するメッセージがない場合、メソッドは新しいメッセージが到達するまで指定のタイムアウト時間だけ待機します。Otherwise, the method waits the specified timeout for a new message to arrive.

RemoveCurrent(TimeSpan, MessageQueueTransaction) RemoveCurrent(TimeSpan, MessageQueueTransaction) RemoveCurrent(TimeSpan, MessageQueueTransaction) RemoveCurrent(TimeSpan, MessageQueueTransaction)

トランザクション キューから現在のメッセージを削除し、そのメッセージを呼び出し元アプリケーションに返します。Removes the current message from a transactional queue and returns the message to the calling application. 削除するメッセージがある場合、メソッドはすぐにメッセージを返します。If there is a message to remove, the method returns it immediately. 削除するメッセージがない場合、メソッドは新しいメッセージが到達するまで指定のタイムアウト時間だけ待機します。Otherwise, the method waits the specified timeout for a new message to arrive.

RemoveCurrent(TimeSpan, MessageQueueTransactionType) RemoveCurrent(TimeSpan, MessageQueueTransactionType) RemoveCurrent(TimeSpan, MessageQueueTransactionType) RemoveCurrent(TimeSpan, MessageQueueTransactionType)

キューから現在のメッセージを削除し、そのメッセージを呼び出し元アプリケーションに返します。Removes the current message from a queue and returns the message to the calling application. 削除するメッセージがある場合、メソッドはすぐにメッセージを返します。If there is a message to remove, the method returns it immediately. 削除するメッセージがない場合、メソッドは新しいメッセージが到達するまで指定のタイムアウト時間だけ待機します。Otherwise, the method waits the specified timeout for a new message to arrive.

Reset() Reset() Reset() Reset()

キューの先頭を指すように現在の列挙子をリセットします。Resets the current enumerator so it points to the head of the queue.

ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

明示的なインターフェイスの実装

IEnumerator.Current IEnumerator.Current IEnumerator.Current IEnumerator.Current

現在のカーソル位置にあるメッセージを参照する Message を返します。Returns a Message that references the message at the current cursor position.

適用対象

こちらもご覧ください