MessageQueue.GetMessageQueueEnumerator 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
为网络上公共队列的动态列表创建枚举数对象。
重载
GetMessageQueueEnumerator() |
提供只进游标语义,以枚举网络上的所有公共队列。 |
GetMessageQueueEnumerator(MessageQueueCriteria) |
提供只进游标语义,以枚举网络上满足指定判据的所有公共队列。 |
GetMessageQueueEnumerator()
提供只进游标语义,以枚举网络上的所有公共队列。
public:
static System::Messaging::MessageQueueEnumerator ^ GetMessageQueueEnumerator();
public static System.Messaging.MessageQueueEnumerator GetMessageQueueEnumerator ();
static member GetMessageQueueEnumerator : unit -> System.Messaging.MessageQueueEnumerator
Public Shared Function GetMessageQueueEnumerator () As MessageQueueEnumerator
返回
MessageQueueEnumerator,提供网络上所有公共消息队列的动态列表。
示例
下面的代码示例循环访问网络中的所有消息队列,并检查每个队列的路径。 最后,它显示网络上的公共队列数。
#using <System.dll>
#using <System.Messaging.dll>
using namespace System;
using namespace System::Messaging;
//**************************************************
// Iterates through message queues and examines the
// path for each queue. Also displays the number of
// public queues on the network.
//**************************************************
void ListPublicQueues()
{
// Holds the count of private queues.
int numberQueues = 0;
// Get a cursor into the queues on the network.
MessageQueueEnumerator^ myQueueEnumerator = MessageQueue::GetMessageQueueEnumerator();
// Move to the next queue and read its path.
while ( myQueueEnumerator->MoveNext() )
{
// Increase the count if priority is Lowest.
Console::WriteLine( myQueueEnumerator->Current->Path );
numberQueues++;
}
// Display final count.
Console::WriteLine( "Number of public queues: {0}", numberQueues );
return;
}
//**************************************************
// Provides an entry point into the application.
//
// This example uses a cursor to step through the
// message queues and list the public queues on the
// network.
//**************************************************
int main()
{
// Output the count of Lowest priority messages.
ListPublicQueues();
}
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
// message queues and list the public queues on the
// network.
//**************************************************
public static void Main()
{
// Create a new instance of the class.
MyNewQueue myNewQueue = new MyNewQueue();
// Output the count of Lowest priority messages.
myNewQueue.ListPublicQueues();
return;
}
//**************************************************
// Iterates through message queues and examines the
// path for each queue. Also displays the number of
// public queues on the network.
//**************************************************
public void ListPublicQueues()
{
// Holds the count of private queues.
uint numberQueues = 0;
// Get a cursor into the queues on the network.
MessageQueueEnumerator myQueueEnumerator =
MessageQueue.GetMessageQueueEnumerator();
// Move to the next queue and read its path.
while(myQueueEnumerator.MoveNext())
{
// Increase the count if priority is Lowest.
Console.WriteLine(myQueueEnumerator.Current.Path);
numberQueues++;
}
// Display final count.
Console.WriteLine("Number of public queues: " +
numberQueues.ToString());
return;
}
}
}
Imports System.Messaging
Public Class MyNewQueue
' Provides an entry point into the application.
'
' This example uses a cursor to step through the
' message queues and list the public queues on the
' network.
Public Shared Sub Main()
' Create a new instance of the class.
Dim myNewQueue As New MyNewQueue()
' Output the count of Lowest priority messages.
myNewQueue.ListPublicQueues()
Return
End Sub
' Iterates through message queues and examines the
' path for each queue. Also displays the number of
' public queues on the network.
Public Sub ListPublicQueues()
' Holds the count of private queues.
Dim numberQueues As Int32 = 0
' Get a cursor into the queues on the network.
Dim myQueueEnumerator As MessageQueueEnumerator = _
MessageQueue.GetMessageQueueEnumerator()
' Move to the next queue and read its path.
While myQueueEnumerator.MoveNext()
' Increase the count if the priority is Lowest.
Console.WriteLine(myQueueEnumerator.Current.Path)
numberQueues += 1
End While
' Display final count.
Console.WriteLine(("Number of public queues: " + _
numberQueues.ToString()))
Return
End Sub
End Class
注解
此 重载 GetMessageQueueEnumerator 返回网络上所有公共队列的枚举。
由于游标与动态列表相关联,因此枚举反映你对队列列表所做的任何修改,以便队列列表删除或添加到游标当前位置之外。 添加或删除位于游标当前位置之前的队列不会反映出来。 例如,枚举器可以自动访问超出游标位置的追加队列,但不能访问在该位置之前插入的队列。 但是,可以通过调用 ResetMessageQueueEnumerator来重置枚举,从而将光标移回列表的开头。
网络中没有定义的队列顺序。 枚举器不会按计算机、标签、公共或专用状态或任何其他可访问条件对其进行排序。
如果要在网络上对队列进行静态快照,而不是与其建立动态连接,请调用 GetPublicQueues 或 GetPrivateQueuesByMachine(String)。 这两种方法中的每一个都返回一个对象数组 MessageQueue ,这些对象表示调用该方法时的队列。
下表显示了此方法是否在各种工作组模式下可用。
工作组模式 | 可用 |
---|---|
本地计算机 | 否 |
本地计算机和直接格式名称 | 否 |
远程计算机 | 否 |
远程计算机和直接格式名称 | 否 |
另请参阅
适用于
GetMessageQueueEnumerator(MessageQueueCriteria)
提供只进游标语义,以枚举网络上满足指定判据的所有公共队列。
public:
static System::Messaging::MessageQueueEnumerator ^ GetMessageQueueEnumerator(System::Messaging::MessageQueueCriteria ^ criteria);
public static System.Messaging.MessageQueueEnumerator GetMessageQueueEnumerator (System.Messaging.MessageQueueCriteria criteria);
static member GetMessageQueueEnumerator : System.Messaging.MessageQueueCriteria -> System.Messaging.MessageQueueEnumerator
Public Shared Function GetMessageQueueEnumerator (criteria As MessageQueueCriteria) As MessageQueueEnumerator
参数
- criteria
- MessageQueueCriteria
MessageQueueCriteria,包含用于筛选可用消息队列的判据。
返回
MessageQueueEnumerator,提供网络上公共消息队列的动态列表,这些消息队列满足 criteria
参数指定的限制。
示例
下面的代码示例循环访问消息队列,并显示在最后一天创建且存在于计算机“MyComputer”中的每个队列的路径。
#using <system.dll>
#using <system.messaging.dll>
using namespace System;
using namespace System::Messaging;
ref class MyNewQueue
{
public:
// Iterates through message queues and displays the
// path of each queue that was created in the last
// day and that exists on the computer "MyComputer".
void ListPublicQueuesByCriteria()
{
UInt32 numberQueues = 0;
// Specify the criteria to filter by.
MessageQueueCriteria^ myCriteria = gcnew MessageQueueCriteria;
myCriteria->MachineName = "MyComputer";
myCriteria->CreatedAfter = DateTime::Now.Subtract( TimeSpan(1,0,0,0) );
// Get a cursor into the queues on the network.
MessageQueueEnumerator^ myQueueEnumerator = MessageQueue::GetMessageQueueEnumerator( myCriteria );
// Move to the next queue and read its path.
while ( myQueueEnumerator->MoveNext() )
{
// Increase the count if priority is Lowest.
Console::WriteLine( myQueueEnumerator->Current->Path );
numberQueues++;
}
// Handle no queues matching the criteria.
if ( numberQueues == 0 )
{
Console::WriteLine( "No public queues match criteria." );
}
return;
}
};
int main()
{
// Create a new instance of the class.
MyNewQueue^ myNewQueue = gcnew MyNewQueue;
// Output the count of Lowest priority messages.
myNewQueue->ListPublicQueuesByCriteria();
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
// message queues and list the public queues on the
// network that specify certain criteria.
//**************************************************
public static void Main()
{
// Create a new instance of the class.
MyNewQueue myNewQueue = new MyNewQueue();
// Output the count of Lowest priority messages.
myNewQueue.ListPublicQueuesByCriteria();
return;
}
//**************************************************
// Iterates through message queues and displays the
// path of each queue that was created in the last
// day and that exists on the computer "MyComputer".
//**************************************************
public void ListPublicQueuesByCriteria()
{
uint numberQueues = 0;
// Specify the criteria to filter by.
MessageQueueCriteria myCriteria = new
MessageQueueCriteria();
myCriteria.MachineName = "MyComputer";
myCriteria.CreatedAfter = DateTime.Now.Subtract(new
TimeSpan(1,0,0,0));
// Get a cursor into the queues on the network.
MessageQueueEnumerator myQueueEnumerator =
MessageQueue.GetMessageQueueEnumerator(myCriteria);
// Move to the next queue and read its path.
while(myQueueEnumerator.MoveNext())
{
// Increase the count if priority is Lowest.
Console.WriteLine(myQueueEnumerator.Current.Path);
numberQueues++;
}
// Handle no queues matching the criteria.
if (numberQueues == 0)
{
Console.WriteLine("No public queues match criteria.");
}
return;
}
}
}
Imports System.Messaging
Public Class MyNewQueue
'
' Provides an entry point into the application.
'
' This example uses a cursor to step through the
' message queues and list the public queues on the
' network that specify certain criteria.
Public Shared Sub Main()
' Create a new instance of the class.
Dim myNewQueue As New MyNewQueue()
' Output the count of Lowest priority messages.
myNewQueue.ListPublicQueuesByCriteria()
Return
End Sub
' Iterates through message queues and displays the
' path of each queue that was created in the last
' day and that exists on the computer "MyComputer".
Public Sub ListPublicQueuesByCriteria()
Dim numberQueues As Int32 = 0
' Specify the criteria to filter by.
Dim myCriteria As New MessageQueueCriteria()
myCriteria.MachineName = "MyComputer"
myCriteria.CreatedAfter = DateTime.Now.Subtract(New _
TimeSpan(1, 0, 0, 0))
' Get a cursor into the queues on the network.
Dim myQueueEnumerator As MessageQueueEnumerator = _
MessageQueue.GetMessageQueueEnumerator(myCriteria)
' Move to the next queue and read its path.
While myQueueEnumerator.MoveNext()
' Increase the count if the priority is Lowest.
Console.WriteLine(myQueueEnumerator.Current.Path)
numberQueues += 1
End While
' Handle no queues matching the criteria.
If numberQueues = 0 Then
Console.WriteLine("No queues match the criteria.")
End If
Return
End Sub
End Class
注解
此 重载 GetMessageQueueEnumerator 返回网络上满足应用程序条件中定义条件的所有公共队列的列表。 可以指定要包含的条件,例如队列创建或修改时间、计算机名称、标签、类别或这些条件的任意组合。
由于游标与动态列表相关联,因此枚举反映对超出游标当前位置的队列所做的任何修改。 不会反映游标当前位置之前对队列所做的更改。 例如,枚举器可以自动访问超出游标位置的追加队列,但不能访问在该位置之前插入的队列。 但是,可以通过调用 ResetMessageQueueEnumerator来重置枚举,从而将光标移回列表的开头。
网络中没有定义的队列顺序。 枚举器不会按计算机、标签、公共或专用状态或任何其他可访问条件对其进行排序。
如果希望对网络上的队列进行静态快照,而不是与其建立动态连接,请为 GetPublicQueues 指定条件或调用 GetPrivateQueuesByMachine(String)。 这两种方法中的每一个都返回一个对象数组 MessageQueue ,这些对象表示调用该方法时的队列。 调用 GetPublicQueuesByCategory(Guid)、 GetPublicQueuesByLabel(String)或 GetPublicQueuesByMachine(String) 提供的结果与分别使用筛选条件 、Label、 和 MachineName的Category调用GetPublicQueues相同。
下表显示了此方法是否在各种工作组模式下可用。
工作组模式 | 可用 |
---|---|
本地计算机 | 否 |
本地计算机和直接格式名称 | 否 |
远程计算机 | 否 |
远程计算机和直接格式名称 | 否 |