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

Lea*_*ner 10 .net c# msmq

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

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

Pey*_*row 19

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

List<ServiceController> 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? }
Run Code Online (Sandbox Code Playgroud)