2012-04-10 44 views
0

我有一个监视其他子服务进程的父服务。当我需要通过进程'object.Kill()杀死某个子进程并等待它完成时。然后,我很惊讶这不会记录到事件查看器应用程序日志中,其中进程名称作为实例名称,并且消息为“服务已成功停止”?当父服务再次启动子服务过程时,我确实在事件查看器的应用程序日志“服务已成功启动”中看到一个条目。Process.Kill()未记录在事件查看器中

任何想法?

谢谢!

回答

3

应用程序需要登录的东西在应用程序日志自己 - 用Process.Kill不是问一个服务停止的一个优雅的方式,这样就不会记录它停止(因为它被踢出的内存)

1

而不是使用Process.Kill()来控制您的服务尝试使用ServiceController类。举例来说,参见类似的问题here。要写入EventLog,请参阅EventLogWriteEntry方法的文档

1

是的,您应该使用服务控制器类来停止或暂停服务而不是杀死它们。

您将需要添加使用System.ServiceProcess命名空间。

如果你想找停止依赖(孩子),你可以使用下面的我这个抢的是什么都你寻找相关的服务,并停止相应的子服务: -

ServiceController的SC =新的ServiceController ( “%PARENT_SERVICE%”); ServiceController [] scServices = sc.DependentServices;

 foreach (ServiceController dependant in scServices) 
     { 
      if (dependant.DisplayName == "%CHILD_SERVICE%") 
      { 
       dependant.Stop(); 
       dependant.WaitForStatus(ServiceControllerStatus.Stopped); 
      } 
     }