MessageEnumerator Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Ger en framåtriktad markör som kan räknas upp via meddelanden i en meddelandekö.
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
- Arv
- Implementeringar
Exempel
I följande exempel hämtas en dynamisk lista med meddelanden i en kö och alla meddelanden räknas med egenskapen Priority inställd på 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
Kommentarer
Används MessageEnumerator för dynamisk interaktion med meddelanden i en kö. Metoder som är tillgängliga via MessageQueue klassen kan returnera antingen en MessageEnumerator pekar på en dynamisk lista med meddelanden i kön eller en matris som innehåller en kopia vid ett givet ögonblick – en ögonblicksbild – av kön vid den tidpunkt då den angivna metoden anropades.
Till skillnad från en statisk ögonblicksbild kan du ändra samlingen med en uppräknare. Med hjälp av kan MessageEnumeratordu ta bort meddelanden från kön och ändringen återspeglas omedelbart i kön.
En uppräknare tar inte bort meddelandena från kön när den frågar kön. Den returnerar information om meddelandet vid den aktuella markörens position, men det lämnar meddelandet i kön.
A MessageEnumerator är en markör som initieras till huvudet på en dynamisk lista. Listordningen är samma som ordningen på meddelandena i kön, enligt meddelandeprioritet. Du kan flytta markören till det första meddelandet i kön genom att anropa MoveNext. När uppräknaren har initierats kan du använda MoveNext för att gå vidare genom de återstående meddelandena. Du kan ange om du vill vänta tills ett meddelande blir tillgängligt genom att skicka en timeout till MoveNext metoden.
Eftersom uppräknaren är dynamisk kan ett meddelande som läggs till utanför markörens aktuella position (till exempel på grund av låg prioritet) nås av uppräknaren. Det går inte att komma åt ett meddelande som infogas före markörens aktuella position. Det går inte att gå bakåt med en MessageEnumerator. En markör tillåter framåtriktad rörelse. Med Reset metoden kan du placera markören i början av kön.
Instanser av för en viss kö fungerar oberoende av MessageEnumerator varandra. Du kan skapa två MessageEnumerator instanser som gäller för samma kö. De ändringar som görs MessageEnumerator i meddelandena i kön återspeglas omedelbart i en andra uppräknare om den andra uppräknaren placeras före den första. Men om två uppräknare har samma position och en av dem tar bort meddelandet vid den positionen utlöses ett undantag om den andra uppräknaren försöker hämta värdet Current för egenskapen i det nu borttagna meddelandet.
Note
Om du skapar en instans av MessageQueue med MessageQueue.DenySharedReceive inställd på truekan inget annat program ändra meddelandena i uppräknaren när du har anslutningen till kön.
Egenskaper
| Name | Description |
|---|---|
| Current |
Hämtar den aktuella som Message den här uppräknaren pekar på. |
| CursorHandle |
Hämtar det interna meddelandekömarkörhandtaget som används för att bläddra bland meddelanden i kön. |
Metoder
| Name | Description |
|---|---|
| Close() |
Frigör de resurser som är associerade med uppräknaren. |
| CreateObjRef(Type) |
Skapar ett objekt som innehåller all relevant information som krävs för att generera en proxy som används för att kommunicera med ett fjärrobjekt. (Ärvd från MarshalByRefObject) |
| Dispose() |
Släpper alla resurser som används av MessageEnumerator. |
| Dispose(Boolean) |
Släpper de ohanterade resurser som används av MessageEnumerator och släpper eventuellt de hanterade resurserna. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| Finalize() |
Detta API stöder produktinfrastrukturen och är inte avsett att användas direkt från koden. Frigör de resurser som finns i uppräknaren. |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetLifetimeService() |
Föråldrad.
Hämtar det aktuella livslängdstjänstobjektet som styr livslängdsprincipen för den här instansen. (Ärvd från MarshalByRefObject) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| InitializeLifetimeService() |
Föråldrad.
Hämtar ett tjänstobjekt för livslängd för att styra livslängdsprincipen för den här instansen. (Ärvd från MarshalByRefObject) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| MemberwiseClone(Boolean) |
Skapar en ytlig kopia av det aktuella MarshalByRefObject objektet. (Ärvd från MarshalByRefObject) |
| MoveNext() |
Avancerar uppräknaren till nästa meddelande i kön, om ett för närvarande är tillgängligt. |
| MoveNext(TimeSpan) |
Avancerar uppräknaren till nästa meddelande i kön. Om uppräknaren är placerad i slutet av kön MoveNext() väntar tills ett meddelande är tillgängligt eller den angivna tidsgränsen upphör att gälla. |
| RemoveCurrent() |
Tar bort det aktuella meddelandet från en transaktionell eller icke-transaktionell kö och returnerar meddelandet till det anropande programmet. Ingen tidsgräns har angetts för att ett meddelande ska tas emot i kön. |
| RemoveCurrent(MessageQueueTransaction) |
Tar bort det aktuella meddelandet från en transaktionskö och returnerar meddelandet till det anropande programmet. Ingen tidsgräns har angetts för att ett meddelande ska tas emot i kön. |
| RemoveCurrent(MessageQueueTransactionType) |
Tar bort det aktuella meddelandet från en kö och returnerar meddelandet till det anropande programmet. Ingen tidsgräns har angetts för att ett meddelande ska tas emot i kön. |
| RemoveCurrent(TimeSpan, MessageQueueTransaction) |
Tar bort det aktuella meddelandet från en transaktionskö och returnerar meddelandet till det anropande programmet. Om det finns ett meddelande att ta bort returnerar metoden den omedelbart. Annars väntar metoden på den angivna tidsgränsen för att ett nytt meddelande ska tas emot. |
| RemoveCurrent(TimeSpan, MessageQueueTransactionType) |
Tar bort det aktuella meddelandet från en kö och returnerar meddelandet till det anropande programmet. Om det finns ett meddelande att ta bort returnerar metoden den omedelbart. Annars väntar metoden på den angivna tidsgränsen för att ett nytt meddelande ska tas emot. |
| RemoveCurrent(TimeSpan) |
Tar bort det aktuella meddelandet från kön och returnerar meddelandet till det anropande programmet. Om det finns ett meddelande att ta bort returnerar metoden den omedelbart. Annars väntar metoden på den angivna tidsgränsen för att ett nytt meddelande ska tas emot. |
| Reset() |
Återställer den aktuella uppräknaren så att den pekar på köns huvud. |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |
Explicita gränssnittsimplementeringar
| Name | Description |
|---|---|
| IEnumerator.Current |
Returnerar ett Message som refererar till meddelandet vid den aktuella markörens position. |