什么是 ServiceBase.ServiceHandle?有什么例子吗?

mar*_*raz 4 c# windows-services

我正在从事一项服务,该服务监视文件系统以修改/添加/删除文件夹内的任何内容。当我开始实现它时,我在ServiceBase类中遇到了这个属性ServiceBase.ServiceHandle
这是做什么用的?我能用它实现什么?我尝试用谷歌搜索一下,但发现的内容与 MSDN 网站告诉我的内容差不多。
有人知道如何使用它的一些示例或教程吗?

谢谢

Mat*_*vis 5

ServiceBase.ServiceHandle是用于更新服务控制面板中服务状态的系统句柄。RegisterServiceCtrlHandler它与 Win32和函数返回的句柄相同RegisterServiceCtrlHandlerEx

所有服务都有责任更新其状态。在非托管服务中,例如用 C++ 创建的服务,这是开发人员的责任。SetServiceStatus当状态更改时,您可以将句柄和更新后的状态(例如,START_PENDING、RUNNING、STOPPED)作为输入传递给 Win32函数。

即使在托管服务中,例如使用 C# 创建的服务,开发人员仍然负责更新状态;只是该类ServiceBase会为您执行所有状态更新。

简而言之,我想说这个句柄对于继承自的托管服务来说是完全不必要的ServiceBase.