创建使用Windows 服务

一、Windows 服务概念介绍

 

      Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间

运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。

这使服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行

功能时使用。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。

 

二、创建Windows服务

 

    接下来我们将用VS2010来创建一个Windwos服务。这个Windows服务将只做简单的向日记文件中每隔一段时间写日记。

当然你可以用来处理你更复杂的业务逻辑,在这里主要讲一下创建过程和简单应用。

 

新建项目》Windows模板》Windows服务,如下图所示

 

 

      创建后生成有一个Service1.cs的文件,这个就是我们的windows服务文件。我现在在这里把它的名字改一下,

改为HouseService.cs(这个主要是实际项目中要用到)当然这里也可以不用改,这个主要是自己喜好。

 

现在我们把HouseService切换到设计模式,然后从工具箱里面放入一个timer 控件

 

 我们这里用的timer是System.Timers 一般在工具箱里没有显示出来,可以点击工具箱右键选择项从中选择如下图所示

 

 

 

在这里我将timer1改为housetimer

 

点击housetimer,在属性里将Interval改为60000。即轮询时间为1分钟。选择其事件Elapsed双击进入事件体。

 

 

      接下来我们再切换回设计模式添加一个事件日志,就是将我们的服务的状态都通过事件查看器能观察到

在设计模式下添加一个eventLog ,我这里将名称改为houselog,在属性中我们将Log类型改为Application类型

在Source属性中输入“HouseService”,并在onstart和onstop里实现以下代码

 

 

 

要运行这个service我们还需要添另installer如图所示,切换到设计模式,右击选择Add Installer

 

会产生ProjectInstaller.cs文件和serviceProcessInstaller1,serviceInstaller1

 

我在这里改为serviceProcessInstaller,serviceInstaller

 

现在我们来修改他们的属性来控制Service的安装和启动选项。在ProjectInstaller得设计视图中选中serviceProcessInstaller,

将它得Account属性选为LocalSystem,这样以这个帐号服务启动。如果你希望系统启动时自动启动服务得话,将serviceInstaller的StartType的属性选为Automatic,如果手动启动的话,选为manaul.

 

二、Windows服务的安装

 

现在我们就开发完了,首先人们bulid一下我们的工程,然后debug中会生成一个HouseService.exe文件,但是如何让它跑起来呢,

现在我们就需要安装服务。安装服务有两种方式一种是VS自带的工具,这种要依靠VS提供的工具IntallUtil.exe这个程序位于C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727.点击开始菜单,选择“运行”,在运行对话框中输入cmd,进入到命令行窗口,

输入cd :/WINDOWS/Microsoft.NET/Framework/v2.0.50727,进入到这个目录,然后输入installutil E:/VS2010-project/HouseOnline/HouseOnline.WindowsService/bin/Debug/HouseService.exe, installutil后边的内容就是我们的

工程生成的可执行程序的路径,情根据需要修改。删除服务

installutil –u E:/VS2010-project/HouseOnline/HouseOnline.WindowsService/bin/Debug/HouseOnline.WindowsService.exe

 

另一种则不需要工具直接在cmd中执行即可。即

 

 

sc delete HouseService

sc create HouseService binpath= "E:/VS2010-project/HouseOnline/HouseOnline.WindowsService/bin/Debug/HouseOnline.WindowsService.exe" type= share start= auto displayname= "HouseService" depend= Tcpip

 

 

安装成功如下图所示

 

 

 

三、Windows服务的调试

 

 

      1. 设置断点。一般来说,我们服务里需要用到一个另外的线程来执行任务,你需要在线程的执行代码中来设置断点。

  2. 安装service,我们前边有介绍如何安装。

  3. 如果你的Service启动类型是手动(Manual),你需要到“服务”里启动你的Service.一般来说,如果你的service在开发阶段,我推荐你将Service的启动类型设置为Manual,这样便于调试,因为如果service在运行过程中,你将无法build工程。

  4. 在VS中,从菜单中选择Debug->Attach Process…。,将会出现下图:

 

 

 

 

 

最后运行结果,事件查看器中每分钟写一个日志,如图所示

 

 

 

最后把此服务删除cmd>sc delete HouseService

 

这次只是做了一个最基本的windows的创建,使用,安装,调试。自己完全可以根据自己的业务需求来改造。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值