2009-11-06 38 views

回答

2

我建议你谷歌的不同部分,在网络上不同的地方有不同的信息焦点(和先进的最新信息级别)。您需要了解以下主题:

  • Windows服务背景:Windows中的服务如何工作。看看它们在用户界面,系统权限(服务运行的权限以及权限),启动/关闭以及用户反馈方面有何不同。

  • 您可能想要在服务中执行的一件事是使用Timer控件执行定期任务。放在窗体上的“普通”计时器不能在服务中使用,因为该控件必须与UI窗口(服务缺少)一起使用。你必须使用System.Timer控件。 Google了解更多信息。我把这个放在这里,因为你会浪费几个小时想知道为什么你的计时器不工作,我们所有写过服务的人都经历了这个!

  • 调试 - 如何调试服务?有几个选项。

  • 部署 - 安装服务与Windows应用程序不同,涉及更多。这不是一个很大的谜团,只是有更多需要担心的事情。

  • 与用户的交互 - 服务不使用用户界面,那么您将如何使用户能够控制服务(配置,启动/停止,查看日志等)。

这些是一些想到的主题,如果你仔细阅读这些内容,你应该没问题。

我还建议在虚拟机上测试您的服务部署,这样您就可以知道您的设置有效。

1

我会强烈建议这样的方法对于调试目的:

Service with console option

很抱歉的链路质量,我似乎无法找到堆栈溢出相关的问题。这帮助我编写和调试我的服务,并在测试环境中监视它们。

2

以下是在C#中创建Windows服务的分步说明。

Easiest language to create a windows service

之后,您可以使用这些指示的服务安装/命令行卸载本身,而不是使用InstallUtil可执行文件。

How to make a .NET Windows Service start right after the installation?

如果你要调试的服务,把呼叫System.Diagnostics.Debugger.Break()在你的Windows服务的Main()功能。当您从Windows服务MMC启动服务时,程序化断点将触发一个对话框,允许您启动新的调试会话(或使用Visual Studio的现有实例)。通常的注意事项 - 确保编译调试,确保你在本地机器上有调试权限等。如果你想跳过Main()的启动逻辑,你可以把编程断点放在你的服务的构造函数或OnStart()回调函数中。

0

看看Topshelf

Topshelf是一个托管使用.NET框架编写的服务的框架。简化了服务的创建,允许开发人员创建一个简单的控制台应用程序,该应用程序可以使用Topshelf作为服务进行安装。原因很简单:调试控制台应用程序比服务更容易。一旦应用程序经过测试并准备投入使用,Topshelf可以轻松地将应用程序作为服务安装。

相关问题