2015-02-10 71 views
2

我第一次尝试创建服务。 该服务以用户身份自动启动。Windows服务似乎什么都不做OnShutdown()

我想处理关机也做一些清理。

对于我试过如下: 在服务我设置

CanShutdown为true。 在服务文件I中使用的follwoing代码:

protected override void OnShutdown() 
    { 
     this.eventLog.WriteEntry("OnShutdown."); 
     this.OnStop(); // does some cleanup 
     base.OnShutdown(); 
    } 

(其中事件日志是System.Diagnostic.EventLog其记录到应用程序(和在的OnStart和调用OnStop wchich写该消息到事件日志)也可使用。

所以对我来说,它看起来像OnShutdown不会被触发。

什么可以是可能的原因是什么? (我看停机期间调试没有可能)

+0

将该服务的帐户更改为域帐户,应该触发OnShutdown。 – 2015-02-10 12:57:16

+0

机器上只有本地帐户 - 它不在域中,但在工作组中。提供用户名作为服务器安装名为MachineName \ UserName – Offler 2015-02-10 13:10:35

+0

将服务更改为以本地服务运行 – 2015-02-10 13:13:46

回答

0

为了回答这个问题,我很可能会添加一个Windows服务。为此,请编译“调试”服务以包含调试信息。然后,手动安装并启动该服务。在服务运行时,在Visual Studio中,从“调试菜单”(或类似的,我不知道确切的术语)中选择“附加到进程”。事先,使用任务管理器(标签页“服务”)找出进程ID。

+0

系统关闭时他能继续调试吗?我想在停止服务之前,Windows关闭应用程序,是吗? – 2015-02-10 13:01:01

+0

我不知道,这似乎有道理。 – Codor 2015-02-10 13:07:52

+0

我的问题是Visual Studio将关闭服务之前关闭 - 因此我看atm没有可能调试。 – Offler 2015-02-10 13:11:36