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 mensajes de una cola y se cuentan todos Priority los mensajes con MessagePriority.Lowestla propiedad establecida en.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 'MyNewQueue

Comentarios

Se MessageEnumerator usa para la interacción dinámica con los mensajes de una cola.Use MessageEnumerator for dynamic interaction with messages in a queue. Los métodos disponibles a MessageQueue través de la clase pueden MessageEnumerator devolver un que señale a una lista dinámica de mensajes de la cola, o una matriz que contenga una copia en un instante dado: una instantánea de la cola en el momento en que se llamó al método especificado.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. MessageEnumeratorCon, puede quitar 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 quita 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 la lista es el mismo que el orden de los mensajes en la cola, de acuerdo con la prioridad del mensaje.The list order is the same as the order of the messages in the queue, according to message priority. Puede trasladar el cursor al primer mensaje de la cola mediante una llamada MoveNexta.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 por los mensajes restantes.After the enumerator has been initialized, you can use MoveNext to step forward through the remaining messages. Puede especificar si desea esperar a que un mensaje esté disponible pasando un tiempo de espera MoveNext al 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 obtener acceso a un mensaje que se anexa más allá de la posición actual del cursor (por ejemplo, debido a la baja prioridad).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. No se puede obtener acceso a un mensaje que se inserta antes de la posición actual del cursor.A message that is inserted before the cursor's current position cannot be accessed. No es posible retroceder con un MessageEnumerator.It is not possible to step backward with a MessageEnumerator. Un cursor permite el movimiento solo hacia delante.A cursor allows forward-only movement. El Reset método le permite volver a 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 MessageEnumerator de para una cola determinada funcionan de manera independiente.Instances of MessageEnumerator for a given queue work independently. Puede crear dos MessageEnumerator instancias de que se aplican a la misma cola.You can create two MessageEnumerator instances that apply to the same queue. Los cambios que realiza MessageEnumerator una en los mensajes de la cola se reflejarán inmediatamente en un segundo enumerador si el segundo enumerador se coloca antes del primero.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 Current la 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 podrá modificar los mensajes en el 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: