如何以编程方式知道计算机上是否启用了消息队列?

我知道当我尝试创建新的MessageQueue ,如果未启用消息队列,系统将抛出InvalidOperationException

但是如何以编程方式知道机器上是否启用了消息队列? 我在两个不同的代码库中使用C#2.0和C#4.0。

您可以将System.ServiceProcess用于此项,但首先您需要向项目添加对Service.ServiceProcess引用,并且您可以检索所有服务并获取其状态,如下所示:

 List services = ServiceController.GetServices().ToList(); ServiceController msQue = services.Find(o => o.ServiceName == "MSMQ"); if (msQue != null) { if (msQue.Status == ServiceControllerStatus.Running) { // It is running. } } else { // Not installed? } 

回答有点迟,但如果你是脚本粉丝Powershell在你的帮助下。 要获取数字的状态更新,请使用以下脚本:

 $queues = Get-WmiObject Win32_PerfFormattedData_msmq_MSMQQueue $queues | ft -property Name,MessagesInQueue 

这将显示队列名称和每个队列中的项目数。 希望有一天这会有所帮助。 :d

如何判断是否安装了MSMQ

您已经在那里回答了自己的问题:尝试创建一个新的MessageQueue,并捕获InvalidOperationException。

如果没有exception,则启用MQ; 如果你得到一个例外,它没有启用。 (如果创建了一个MessageQueue实例,您可以将其丢弃,因为您只使用它来检测支持)