什么时候卸载Windows Services可执行文件?

时间:2014-03-19 03:04:29

标签: c# windows windows-services

什么时候运行Windows服务的可执行文件被卸载?

例如在c#中,Windows服务的正常实现是创建一个带有实现ServiceBase的类的exe,例如。

public class SlicifyClientNodeService : ServiceBase
{
    public static DateTime BootTime = DateTime.Now;

    protected override void OnStart(string[] args)
    {
        //start running
    }

    protected override void OnStop()
    {
        //stop running
    }
}

当从服务控制面板启动/停止服务时,会调用onstart / onstop方法,但是当像BootTime这样的静态变量被重新初始化时,它不清楚。

1 个答案:

答案 0 :(得分:1)

通常,对于仅实现单个服务的可执行文件,每次停止服务时都会终止该进程,并在下次启动时重新启动该进程。

但是,ServiceMain的文档意味着可以在同一进程中停止然后重新启动服务,在这种情况下,静态变量不会重新初始化。大概这种情况只有在停止和启动请求非常接近的情况下才会发生,我宁愿怀疑事实上它甚至不会发生。

无论如何,我建议您进行防御性编码并避免依赖此行为;可能存在特殊情况,它会发生变化,或者在将来的Windows版本中可能会发生变化。