2011-08-31 150 views
4

今天我在c#中构建了我的第一个Windows服务。Windows服务一般问题

我有几个问题,我会很高兴和thanksfull如果你能帮助我。

1) 当我安装我的服务,这是乳宁和一切,但它在Windows任务管理器不会显示出来。任何人都知道为什么?

2)如果我试图把一个系统盘,我不能做到这一点 - 因为我不能把一个图标。在窗口服务没有System.Drawing ..我能做些什么呢?

3)

protected override void OnContinue() 
{ 
    //eventLog1.WriteEntry("In OnContinue."); 
} 

这是什么“OnContinue”呢?

我无法理解它。

回答

4

服务没有出现在Windows任务管理器

我假设你是在Vista/Windows 7中运行,并且您的服务没有运行为您的帐户。因此,您需要在任务管理器的“进程”选项卡上说“显示所有用户的进程”,然后您应该看到您的服务(可能在default Windows accounts之一下运行)。

您不会在“应用程序”选项卡中看到您的服务,服务确实在而不是出现在那里。

托盘图标的Windows服务

从Windows Vista上,服务不允许与桌面交互;即使你仍然可以这样做,你与哪一个交互(可以有多个用户登录到具有多个桌面的计算机上,认为终端服务器/多个远程桌面会话)?

你显示服务的图标的方式是创建一个与您的服务(使用类似WCF或远程处理),这是负责显示在任务栏中的图标进行通信的程序。

记住,你的服务更可能不需要图标在托盘上,创造了Microsoft Management Console一个插件来代替,并通过WCF /远程处理的服务进行通信。

OnContinue

documentation for the OnContinue method

在派生类中实现,OnContinue运行时一个继续 命令由服务控制管理器(SCM)发送到服务。 指定服务在暂停后恢复正常功能 时要执行的操作。

基本上,如果你的服务可以暂停(不停止),那么当服务恢复时调用这个服务。

+0

damit!你回答了我想要的一切!你的帅哥!谢谢allllooottt! –

+0

@Alon M:没问题,很乐意帮忙。 =) – casperOne

1

1)如果服务显示在“服务”管理控制台中运行 - 那么你应该会看到一个进程在任务管理器的服务。您不会在“应用程序”选项卡上看到任何内容 - 因为服务在后台运行。但是,在“进程”选项卡中 - 应该会看到用于安装服务的可执行文件的条目。

3)Windows服务中的OnContinue()方法定义当服务从“暂停”状态返回到“已启动”状态时将发生的操作。

+0

对于1.,我认为它将在许多'svchost.exe'进程之一下运行。纠正另外两个问题(虽然从服务中尝试与用户桌面进行交互是不好的做法,所以2可能不是一个好主意......) – jadarnel27

+0

@ jadarnel27 - 我已经写了几个服务,并且它们总是显示在进程列表使用我的项目编译到的可执行文件的名称。 – pmartin

+0

哇。我疯了一样地狱。我只是在我的PC上查看任务管理器,并且我写的服务正在以可执行文件名称运行(如您所说)。为你+1。 -1对我来说=) – jadarnel27