Windows Service开发日志二(安装与调试)

 要运行这个service我们还要做下边的几个步骤:

1.为我们的Service添加Installer,右键点击设计视图,选择Add Installer,VS将会为我们添加ProjectInstaller.cs,并在ProjectInstaller中添加组件serviceInstaller1和serviceProcessInstaller1,现在我们来修改他们的属性来控制Service的安装和启动选项。在ProjectInstaller得设计视图中选中serviceProcessInstaller1,将它得Account属性选为LocalSystem,这样以这个帐号服务启动。如果你希望系统启动时自动启动服务得话,将serviceInstaller1的StartType的属性选为Automatic,如果手动启动的话,选为manaul。

 

2.安装service,我们要用到IntallUtil.exe这个程序,这个程序位于C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727。点击开始菜单,选择“运行”,在运行对话框中输入cmd,进入到命令行窗口,输入cd :/WINDOWS/Microsoft.NET/Framework/v2.0.50727,进入到这个目录,然后输入installutil F:/Programs/C#/TestService/TestService/bin/Debug/testserveice.exe, installutil后边的内容就是我们的工程生成的可执行程序的路径,情根据需要修改。

如果你给ServiceInstaller1的StartType设为Automatic的话,安装完服务,服务已经运行起来了,如果StartType是Manual的话,你需要手动启动。现在我们进入“服务”,要打开“服务”,请单击“开始”,指向“设置”,然后单击“控制面板”。依次单击“性能和维护”、“管理工具”,然后双击“服务”。在里边你应该能够看到我们制作的Service MyFirstService。在这里边,我们可以启动,关闭服务,还可以设置服务的启动类型。然后,我们看看服务有没有正确的写入日志,我们需要进入到事件查看器,要打开“事件查看器”,请单击“开始”,指向“设置”,然后单击“控制面板”。单击“性能和维护”,单击“管理工具”,然后双击“事件查看器”。如下图所示,我们的消息已经成功的写到了系统日志里了。

 

3.如果你不需要这个Service了,仍然使用InstallUtil这个程序来卸载,不过在InstallUtil后跟参数 –u,比如installutil –u F:/Programs/C#/TestService/TestService/bin/Debug/testserveice.exe。

 

Service的调试方法与普通的程序调试方法是不一样的。我来介绍一下。
1. Build你的项目

 

2. 设置断点,因为我们的Service非常的简单,没有什么执行逻辑,所以设置断点没有任何意义,大家可以自己写一些代码来实践。一般来说,我们服务里需要用到一个另外的线程来执行任务,你需要在线程的执行代码中来设置断点。

 

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

 

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

 

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

 

里边列出了正在运行的进程,如果你找不到自己的service,请选中Show processes from all users。在Available processes列表中选中我们的service所在的进程TestService,然后点击Attach按钮,如果你设置的断点合理的话,那么,程序就会停在断点处,接下来你就可以进行调试了。、

 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Data;
 using System.Diagnostics;
 using System.ServiceProcess;
 using System.Text;

 namespace TestService
  {
     public partial class MyFirstService : ServiceBase
      {
         public MyFirstService()
          {
             InitializeComponent();
         }

         protected override void OnStart(string[] args)
          {
             // TODO: Add code here to start your service.
             eventLog1.WriteEntry("Service start");
         }

         protected override void OnStop()
          {
             // TODO: Add code here to perform any tear-down necessary to stop your service.
             eventLog1.WriteEntry("Service stop");
         }
     }
 }

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/turejackon/archive/2009/01/07/3726425.aspx

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值