今天我在c#中构建了我的第一个Windows服务。
我有一些问题,如果你帮助我,我会很高兴和感激。
1) 当我安装我的服务时,它正在运行和一切,但它不会出现在Windows任务管理器中。谁知道为什么?
2)如果我想放一个系统托盘,我不能这样做 - 因为我不能放一个图标。在窗口服务中没有System.Drawing ..我该怎么办呢?
3)
protected override void OnContinue()
{
//eventLog1.WriteEntry("In OnContinue.");
}
“OnContinue”的作用是什么?
我无法理解它。
答案 0 :(得分:4)
服务未显示在Windows任务管理器中
我假设您在Vista / Windows 7上运行,并且您的服务未作为您的帐户运行。因此,您需要在任务管理器的“进程”选项卡上说“显示所有用户的进程”,然后您应该看到您的服务(可能在default Windows accounts之一下运行)。
您不会在“应用程序”标签中看到您的服务,不的服务会出现在那里。
Windows服务的图标托盘
从Windows Vista开始,不允许服务与桌面交互;即使您仍然可以执行此操作,您可以与哪个人进行交互(可能有多个用户登录到具有多个桌面的计算机上,请考虑终端服务器/多个远程桌面会话)?
您显示服务图标的方式是创建一个与您的服务进行通信的程序(使用WCF或Remoting之类的程序),该程序负责在托盘中显示图标。
请注意,您的服务很可能不需要托盘中的图标,而是为Microsoft Management Console创建一个插件,并通过WCF / Remoting与服务进行通信。
<强> OnContinue 强>
来自documentation for the OnContinue
method:
在派生类中实现时,OnContinue在继续时运行 命令由服务控制管理器(SCM)发送到服务。 指定服务恢复正常运行时要执行的操作 暂停后。
基本上,如果您的服务可以暂停(未停止),则在恢复服务时会调用此服务。
答案 1 :(得分:1)
1)如果服务在“服务”管理控制台中显示为正在运行 - 那么您应该在任务管理器中看到该服务的进程。您将不会在“应用程序”选项卡上看到任何内容 - 因为服务在后台运行。但是,在“进程”选项卡中 - 您应该看到用于安装服务的可执行文件的条目。
3)Windows服务中的OnContinue()
方法定义了服务从“暂停”状态返回“已启动”状态时将发生的操作。