我有一个编写为在前台运行的程序。但它背景本身在某些机器上。
以下是背景信息。
我有一个派生自ServiceBase的类,
public class MyService: ServiceBase
出于调试目的,我不启动服务,如下所示:
ServiceBase.Run(myService);
相反,我按如下方式直接调用OnStart,并永远睡眠:
myService.OnStart(null);
System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
由于某种原因,该过程在生产机器上进行自我处理。想法?
答案 0 :(得分:1)
原来这是因为VS将服务项目的OutputType设置为WinExe(而不是控制台应用程序的Exe)。 WinExe可执行文件背景本身。并且在两台机器上的行为似乎有所不同,因为在一台机器上,我在cygwin shell中,由于某种原因,它本身并不是背景。
答案 1 :(得分:0)
我认为Windows实际上或者可以关注运行应用程序的“主”线程的状态。如果它看到“主”线程正在休眠,那么IIRC就可以完成整个过程。选择何时或背景通常与节能功能有关,例如在笔记本电脑上。