Aracılığıyla paylaş


MessageEnumerator Sınıf

Tanım

İleti kuyruğundaki iletileri listelemek için yalnızca ileriye doğru bir imleç sağlar.

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
Devralma
MessageEnumerator
Uygulamalar

Örnekler

Aşağıdaki örnek, bir kuyruktaki iletilerin dinamik listesini alır ve özelliği olarak MessagePriority.Lowestayarlanmış olan tüm iletileri Priority sayar.

#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

Açıklamalar

Kuyruktaki iletilerle dinamik etkileşim için kullanın MessageEnumerator . sınıfı aracılığıyla MessageQueue kullanılabilen yöntemler, kuyruktaki iletilerin dinamik listesine işaret eden bir veya belirtilen yöntemin çağrıldığı sırada kuyruğun anlık görüntüsü olan belirli bir anında bir kopya içeren bir dizi döndürebilir MessageEnumerator .

Statik anlık görüntünün aksine, numaralandırıcı koleksiyonu değiştirmenize olanak tanır. kullanarak MessageEnumeratoriletileri kuyruktan kaldırabilirsiniz ve değişiklik hemen kuyruğa yansıtılır.

Numaralandırıcı, kuyruğu sorguladığında iletileri kuyruktan kaldırmaz. geçerli imleç konumunda ileti hakkındaki bilgileri döndürür, ancak iletiyi kuyrukta bırakır.

A MessageEnumerator , dinamik listenin başına başlatılan bir imleçtir. Liste sırası, ileti önceliğine göre kuyruktaki iletilerin sırasıyla aynıdır. çağrısı MoveNextyaparak imleci kuyruktaki ilk iletiye taşıyabilirsiniz. Numaralandırıcı başlatıldıktan sonra, kalan iletilerde ilerlemek için komutunu kullanabilirsiniz MoveNext . yöntemine bir zaman aşımı geçirerek iletinin kullanılabilir duruma gelmesinin beklenip beklenmeyeceğini MoveNext belirtebilirsiniz.

Numaralandırıcı dinamik olduğundan, imlecin geçerli konumunun ötesine eklenen bir iletiye (örneğin, düşük öncelik nedeniyle) numaralandırıcı tarafından erişilebilir. İmlecin geçerli konumundan önce eklenen iletiye erişilemez. ile MessageEnumeratorgeri gitmek mümkün değildir. İmleç yalnızca ileri taşımaya izin verir. yöntemi, Reset imleci kuyruğun başına geri yerleştirmenizi sağlar.

MessageEnumerator Belirli bir kuyruk için örnekleri bağımsız olarak çalışır. Aynı kuyruğa uygulanan iki MessageEnumerator örnek oluşturabilirsiniz. Kuyruktaki iletilerde yapılan değişiklikler MessageEnumerator , ikinci numaralandırıcı ilk numaradan önce konumlandırılırsa hemen ikinci bir numaralandırıcıya yansıtılır. Ancak, iki numaralandırıcı aynı konuma sahipse ve bunlardan biri iletiyi bu konumdan kaldırırsa, diğer numaralandırıcı özelliğin Current değerini şimdi silinen iletide almaya çalışırsa bir özel durum oluşturulur.

Not

olarak ayarlanmış truebir örneği MessageQueueMessageQueue.DenySharedReceive oluşturursanız, kuyruğa bağlantınız varken başka hiçbir uygulama numaralandırıcınızdaki iletileri değiştiremez.

Özellikler

Current

Bu numaralandırıcının işaret olduğu geçerliyi Message alır.

CursorHandle

Kuyruktaki iletilere göz atmak için kullanılan yerel Message Queuing imleç tutamacını alır.

Yöntemler

Close()

Numaralandırıcıyla ilişkili kaynakları serbest sağlar.

CreateObjRef(Type)

Uzak bir nesneyle iletişim kurmak için kullanılan bir ara sunucu oluşturmak için gereken tüm ilgili bilgileri içeren bir nesne oluşturur.

(Devralındığı yer: MarshalByRefObject)
Dispose()

MessageEnumerator tarafından kullanılan tüm kaynakları serbest bırakır.

Dispose(Boolean)

MessageEnumerator tarafından kullanılan yönetilmeyen kaynakları serbest bırakır ve yönetilen kaynakları isteğe bağlı olarak serbest bırakır.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
Finalize()

Bu API, ürün altyapısını destekler ve doğrudan kodunuzdan kullanıma yönelik değildir.

Numaralandırıcı tarafından tutulan kaynakları serbest bırakır.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetLifetimeService()
Geçersiz.

Bu örnek için yaşam süresi ilkesini denetleen geçerli yaşam süresi hizmet nesnesini alır.

(Devralındığı yer: MarshalByRefObject)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
InitializeLifetimeService()
Geçersiz.

Bu örneğin yaşam süresi ilkesini denetlemek için bir yaşam süresi hizmet nesnesi alır.

(Devralındığı yer: MarshalByRefObject)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
MemberwiseClone(Boolean)

Geçerli MarshalByRefObject nesnenin sığ bir kopyasını oluşturur.

(Devralındığı yer: MarshalByRefObject)
MoveNext()

Şu anda kullanılabilir durumdaysa, numaralandırıcıyı kuyruktaki bir sonraki iletiye ilerler.

MoveNext(TimeSpan)

Numaralandırıcıyı kuyruktaki bir sonraki iletiye ilerler. Numaralandırıcı kuyruğun sonuna konumlandırıldıysa, MoveNext() bir ileti kullanılabilir olana veya verilen zaman aşımı süresi dolana kadar bekler.

RemoveCurrent()

geçerli iletiyi işlem kuyruğundan veya işlem dışı kuyruktan kaldırır ve iletiyi çağıran uygulamaya döndürür. İletinin kuyruğa ulaşması için zaman aşımı belirtilmemiş.

RemoveCurrent(MessageQueueTransaction)

Geçerli iletiyi işlem kuyruğundan kaldırır ve iletiyi çağıran uygulamaya döndürür. İletinin kuyruğa ulaşması için zaman aşımı belirtilmemiş.

RemoveCurrent(MessageQueueTransactionType)

Geçerli iletiyi kuyruktan kaldırır ve iletiyi çağıran uygulamaya döndürür. İletinin kuyruğa ulaşması için zaman aşımı belirtilmemiş.

RemoveCurrent(TimeSpan)

Geçerli iletiyi kuyruktan kaldırır ve iletiyi çağıran uygulamaya döndürür. Kaldırılacak bir ileti varsa, yöntemi bunu hemen döndürür. Aksi takdirde, yöntem yeni bir iletinin gelmesi için belirtilen zaman aşımını bekler.

RemoveCurrent(TimeSpan, MessageQueueTransaction)

Geçerli iletiyi işlem kuyruğundan kaldırır ve iletiyi çağıran uygulamaya döndürür. Kaldırılacak bir ileti varsa, yöntemi bunu hemen döndürür. Aksi takdirde, yöntem yeni bir iletinin gelmesi için belirtilen zaman aşımını bekler.

RemoveCurrent(TimeSpan, MessageQueueTransactionType)

Geçerli iletiyi kuyruktan kaldırır ve iletiyi çağıran uygulamaya döndürür. Kaldırılacak bir ileti varsa, yöntemi bunu hemen döndürür. Aksi takdirde, yöntem yeni bir iletinin gelmesi için belirtilen zaman aşımını bekler.

Reset()

Geçerli numaralandırıcıyı sıranın başına işaret eden şekilde sıfırlar.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Belirtik Arabirim Kullanımları

IEnumerator.Current

geçerli imleç konumundaki iletiye başvuran bir Message döndürür.

Şunlara uygulanır

Ayrıca bkz.