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


        
        ' 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

End Class

설명

사용 하 여 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.

MessageEnumerator 동적 목록 헤드에 초기화 하는 커서입니다.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. 두 개를 만들 수 있습니다 MessageEnumerator 동일한 큐에 적용 되는 인스턴스.You can create two MessageEnumerator instances that apply to the same queue. 변경 내용을 하나 MessageEnumerator 큐의 메시지에 게 즉시 반영 됩니다에 두 번째 열거자가 첫 번째 앞에 위치 하는 경우.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. 그러나 두 열거자는 동일한 위치에 있고 해당 위치에서 메시지를 제거 하는 중에 하는 경우 예외가 throw 됩니다 다른 열거자의 값을 가져오려고 시도 하는 경우는 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.

참고

인스턴스를 만들면 MessageQueue 사용 하 여 MessageQueue.DenySharedReceivetrue, 큐에 연결 해야 하는 동안 다른 애플리케이션에 열거자에 메시지를 수정할 수 있습니다.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.

적용 대상

추가 정보