MessageEnumerator MessageEnumerator MessageEnumerator MessageEnumerator Class

Definición

Proporciona un cursor de tipo sólo hacia delante con el fin de enumerar mensajes en una cola de mensajes.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
Herencia
MessageEnumeratorMessageEnumeratorMessageEnumeratorMessageEnumerator
Implementaciones

Ejemplos

En el ejemplo siguiente se obtiene una lista dinámica de los mensajes en una cola y cuenta todos los mensajes con el Priority propiedad establecida en 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

Comentarios

Use MessageEnumerator para la interacción dinámica con los mensajes en una cola.Use MessageEnumerator for dynamic interaction with messages in a queue. Métodos disponibles a través de la MessageQueue clase puede devolver un MessageEnumerator señalando a una lista dinámica de los mensajes en la cola o una matriz que contiene una copia en un momento dado (una instantánea) de la cola en el momento en el método especificado se llamó.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.

A diferencia de una instantánea estática, un enumerador permite modificar la colección.Unlike a static snapshot, an enumerator allows you to modify the collection. Mediante un MessageEnumerator, puede quitar los mensajes de la cola y el cambio se refleja inmediatamente en la cola.Using a MessageEnumerator, you can remove messages from the queue, and the change is immediately reflected in the queue.

Un enumerador no elimina los mensajes de la cola cuando consulta la cola.An enumerator does not remove the messages from the queue when it queries the queue. Devuelve información sobre el mensaje en la posición actual del cursor, pero deja el mensaje en la cola.It returns information about the message at the current cursor position, but it leaves the message in the queue.

Un MessageEnumerator es un cursor, inicializado en el encabezado de una lista dinámica.A MessageEnumerator is a cursor, initialized to the head of a dynamic list. El orden de lista es el mismo que el orden de los mensajes en la cola, según la prioridad del mensaje.The list order is the same as the order of the messages in the queue, according to message priority. Puede mover el cursor hasta el primer mensaje en la cola mediante una llamada a MoveNext.You can move the cursor to the first message in the queue by calling MoveNext. Una vez inicializado el enumerador, puede usar MoveNext para avanzar paso a paso a través de los mensajes restantes.After the enumerator has been initialized, you can use MoveNext to step forward through the remaining messages. Puede especificar si se debe esperar un mensaje esté disponible pasando un tiempo de espera en el MoveNext método.You can specify whether to wait for a message to become available by passing a timeout into the MoveNext method.

Dado que el enumerador es dinámico, el enumerador puede tener acceso a un mensaje que se anexa más allá de la posición del cursor actual (por ejemplo, debido a la prioridad baja).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. Un mensaje que se inserta antes de que no se puede tener acceso a la posición del cursor actual.A message that is inserted before the cursor's current position cannot be accessed. No es posible ir hacia atrás con un MessageEnumerator.It is not possible to step backward with a MessageEnumerator. Un cursor permite el movimiento de solo avance.A cursor allows forward-only movement. El Reset método le permite colocar el cursor al principio de la cola.The Reset method enables you to place the cursor back at the beginning of the queue.

Las instancias de MessageEnumerator para una cola determinada trabajar de forma independiente.Instances of MessageEnumerator for a given queue work independently. Puede crear dos MessageEnumerator instancias que se aplican a la misma cola.You can create two MessageEnumerator instances that apply to the same queue. Los cambios que otro MessageEnumerator facilita a los mensajes en la cola se reflejarán inmediatamente en un segundo enumerador si el segundo enumerador se coloca antes de la primera.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. Sin embargo, si dos enumeradores tienen la misma posición y uno de ellos quita el mensaje en esa posición, se produce una excepción si el otro enumerador intenta obtener el valor de la Current propiedad en el mensaje eliminado ahora.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.

Nota

Si crea una instancia de MessageQueue con MessageQueue.DenySharedReceive establecido en true, ninguna otra aplicación puede modificar los mensajes del enumerador mientras tenga la conexión a la cola.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.

Propiedades

Current Current Current Current

Obtiene el Message actual al que apunta este enumerador.Gets the current Message that this enumerator points to.

CursorHandle CursorHandle CursorHandle CursorHandle

Obtiene el indicador de cursor de Message Queuing nativo que se utiliza para explorar los mensajes de la cola.Gets the native Message Queuing cursor handle used to browse messages in the queue.

Métodos

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

Libera los recursos asociados al enumerador.Frees the resources associated with the enumerator.

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

Crea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto.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()

Libera todos los recursos que usa MessageEnumerator.Releases all resources used by the MessageEnumerator.

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

Libera los recursos no administrados que usa MessageEnumerator y, de forma opcional, libera los recursos administrados.Releases the unmanaged resources used by the MessageEnumerator and optionally releases the managed resources.

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

Determina si el objeto especificado es igual al objeto actual.Determines whether the specified object is equal to the current object.

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

Libera los recursos mantenidos por el enumerador.Releases the resources held by the enumerator.

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

Sirve como la función hash predeterminada.Serves as the default hash function.

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

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

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

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

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

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.Obtains a lifetime service object to control the lifetime policy for this instance.

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

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

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

Crea una copia superficial del objeto MarshalByRefObject actual.Creates a shallow copy of the current MarshalByRefObject object.

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

Desplaza el enumerador al siguiente mensaje de la cola si hay alguno disponible.Advances the enumerator to the next message in the queue, if one is currently available.

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

Desplaza el enumerador al siguiente mensaje de la cola.Advances the enumerator to the next message in the queue. Si el enumerador se coloca al final de la cola, MoveNext() espera hasta que haya un mensaje disponible o expire el tiempo de espera.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()

Quita el mensaje actual de una cola transaccional o no transaccional y lo devuelve a la aplicación que realiza la llamada.Removes the current message from a transactional or non-transactional queue and returns the message to the calling application. No hay un tiempo de espera determinado para que un mensaje llegue a la cola.There is no timeout specified for a message to arrive in the queue.

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

Quita el mensaje actual de una cola transaccional y devuelve el mensaje a la aplicación que realiza la llamada.Removes the current message from a transactional queue and returns the message to the calling application. No hay un tiempo de espera determinado para que un mensaje llegue a la cola.There is no timeout specified for a message to arrive in the queue.

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

Quita el mensaje actual de una cola y lo devuelve a la aplicación que realiza la llamada.Removes the current message from a queue and returns the message to the calling application. No hay un tiempo de espera determinado para que un mensaje llegue a la cola.There is no timeout specified for a message to arrive in the queue.

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

Quita el mensaje actual de la cola y lo devuelve a la aplicación que realiza la llamada.Removes the current message from the queue and returns the message to the calling application. Si hay un mensaje que quitar, el método lo devuelve inmediatamente.If there is a message to remove, the method returns it immediately. En caso contrario, el método espera el tiempo de espera especificado hasta que llegue un mensaje nuevo.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)

Quita el mensaje actual de una cola transaccional y devuelve el mensaje a la aplicación que realiza la llamada.Removes the current message from a transactional queue and returns the message to the calling application. Si hay un mensaje que quitar, el método lo devuelve inmediatamente.If there is a message to remove, the method returns it immediately. En caso contrario, el método espera el tiempo de espera especificado hasta que llegue un mensaje nuevo.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)

Quita el mensaje actual de una cola y lo devuelve a la aplicación que realiza la llamada.Removes the current message from a queue and returns the message to the calling application. Si hay un mensaje que quitar, el método lo devuelve inmediatamente.If there is a message to remove, the method returns it immediately. En caso contrario, el método espera el tiempo de espera especificado hasta que llegue un mensaje nuevo.Otherwise, the method waits the specified timeout for a new message to arrive.

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

Restablece el enumerador actual de forma que señale al encabezado de la cola.Resets the current enumerator so it points to the head of the queue.

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

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Inherited from Object)

Implementaciones de interfaz explícitas

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

Devuelve una Message que hace referencia al mensaje de la posición actual del cursor.Returns a Message that references the message at the current cursor position.

Se aplica a

Consulte también: