gpt4 book ai didi

c# - 我应该在 ServiceController 上调用 Close() 吗?

转载 作者:行者123 更新时间:2023-11-30 13:19:48 25 4
gpt4 key购买 nike

目前我有这样的方法:

    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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com