目前我有这样的方法:
private bool IsMyServiceRunning(string serviceName)
{
if (String.IsNullOrEmpty(serviceName))
throw new InvalidOperationException("ServiceName cannot be null or empty");
using (var service = new ServiceController(serviceName))
{
if (service.Status == ServiceControllerStatus.Running)
return true;
else
return false;
}
}
这是使用 ServiceController 类的正确方法吗?
我问的原因是我看到的所有示例在完成使用后都不会调用 Close() 方法。是那些不好的例子还是我遗漏了什么?
最佳答案
您正在使用带有 using
语句的 ServiceController
。这将在 ServiceController 上调用 Dispose
,这与显式调用 Close() 相同。
因此在您的情况下,无需再次调用 Close。
如果没有 using 语句,则需要在 ServiceController 上调用 Close() 或 Dispose(),因为它使用了需要释放的非托管资源。否则你会发生内存泄漏。
ServiceController service = null;
try {
service = new ServiceController(serviceName);
if (service.Status == ServiceControllerStatus.Running) {
return true;
}
else {
return false;
}
}
finally{
if (service != null) {
service.Close(); // or service.Dispose();
}
}
关于c# - 我应该在 ServiceController 上调用 Close() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15158734/