加入收藏 | 网站地图 | | RSS | WAP
你好,游客 登录 注册 搜索
背景:
阅读内容  领跑条码、标签打印软件 | 来电弹出客户资料

C#开发windows服务程序简易教程

[日期:2014-03-21] 作者: 来源: [字体: ]

这几天在学习C#中windows服务程序开发,书上讲的很全面很深入但是也很难懂,看了就有放弃的念头。今日在博客园中见到某仁兄的教程,突然觉得C#开发windows服务程序原来如此简单、so easy!本文就向大家介绍如何运用Visual C#来一步一步创建一个文件监视的Windows服务程序,然后介绍如何安装、测试和调试该Windows服务程序。

首先,新建windows服务项目:

创建好项目之后 --- >> 双击 Service1.cs ---- >> 出现一个设计界面 ---->> 右键界面 --- >> 弹出对话框选择添加安装程序

上面一系列操作完成后,就可以对windows服务名称描述以及启动方式等进行修改。

[RunInstaller(true)]

public class Installer1 : System.Configuration.Install.Installer

{

/// <summary>

/// 必需的设计器变量。

/// </summary>

private System.ComponentModel.Container components = null;

private System.ServiceProcess.ServiceProcessInstaller spInstaller;

private System.ServiceProcess.ServiceInstaller sInstaller;

public Installer1()

{

// 该调用是设计器所必需的。

InitializeComponent();

// TODO: 在 InitComponent 调用后添加任何初始化

}

#region Component Designer generated code

/// <summary>

/// 设计器支持所需的方法 - 不要使用代码编辑器修改

/// 此方法的内容。

/// </summary>

private void InitializeComponent()

{

components = new System.ComponentModel.Container();

// 创建ServiceProcessInstaller对象和ServiceInstaller对象

this.spInstaller = new System.ServiceProcess.ServiceProcessInstaller();

this.sInstaller = new System.ServiceProcess.ServiceInstaller();

// 设定ServiceProcessInstaller对象的帐号、用户名和密码等信息

this.spInstaller.Account = System.ServiceProcess.ServiceAccount.LocalSystem;

this.spInstaller.Username = null;

this.spInstaller.Password = null;

// 设定服务名称

this.sInstaller.ServiceName = "PmsDataUpdateService";

//服务描述

this.sInstaller.Description = "hi longhao !";

// 设定服务的启动方式

this.sInstaller.StartType = System.ServiceProcess.ServiceStartMode.Automatic;

this.Installers.AddRange(

new System.Configuration.Install.Installer[] { this.spInstaller, this.sInstaller });

}

#endregion

}

修改好后回头,写入自己想要的操作。Service1.cs出现设计界面,双击设计界面进入cs代码页。可以重写这些方法。

protected override voidOnStart(string[] args)

{

//服务开启执行代码

}

protected override void OnStop()

{

//服务结束执行代码

}

protected override void OnPause()

{

//服务暂停执行代码

base.OnPause();

}

protected override void OnContinue()

{

//服务恢复执行代码

base.OnContinue();

}

protected override void OnShutdown()

{

//系统即将关闭执行代码

base.OnShutdown();

}

除此之外还有一个Program.cs文件:打开看下。

使得一个Windows服务程序能够正常运行,我们需要像创建一般应用程序那样为它创建一个程序的入口点。在Windows服务程序中,我们也是在Main()函数中完成这个操作的。首先我们在Main()函数中创建一个Windows服务的实例,该实例应该是ServiceBase类的某个子类的对象,然后我们调用由基类ServiceBase类定义的一个Run()方法。然而Run()方法并不就开始了Windows服务程序,我们必须通过前面提到的服务控制管理器调用特定的控制功能来完成Windows服务程序的启动,也就是要等到该对象的OnStart()方法被调用时服务才真正开始运行。如果你想在一个Windows服务程序中同时启动多个服务,那么只要在Main()函数中定义多个ServiceBae类的子类的实例对象就可以了,方法就是创建一个ServiceBase类的数组对象,使得其中的每个对象对应于某个我们已预先定义好的服务。

/// <summary>

/// 应用程序的主入口点。

/// </summary>

static void Main()

{

ServiceBase[] ServicesToRun;

ServicesToRun = new ServiceBase[]

{

new Service1(),

new Service2()

};

ServiceBase.Run(ServicesToRun);

}

如果你在你需要的函数里面写过你需要的方法后,点运行则不可运行。

剩下的就是windows服务的安装卸载工作了。

1、安装需要用,这个小玩意可以在网上下载到的。

2、把他放到你编写好的服务程序/bin/Debug文件夹下。

3、打开

4、用命令读到你服务.exe文件夹下。

5、运行 installutil.exe 

6、安装服务命令: installutil  yourservices.exe

7、卸载服务命令: installutil  /u  yourservices.exe

注意的是:安装跟卸载需要保证程序是一样的,没有变更过的,要不会提示卸载不干净。也就是在已安装过服务的时候,不要在vs中修改你的程序。

关于windows服务调试:

保证你的服务已安装成功,且处于启动模式。

点调试--->> 附加到进程

即可。

注意的是:

 

打开任务管理器:结束进程。

关键词:服务  开发 

收藏 推荐 打印 | 录入:blue1000 | 阅读:
本文评论   查看全部评论 (1)
表情: 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事/刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
第 1 楼
* 匿名 发表于 2016/12/24 20:16:03
http://www.blue1000.com/bkhtml/c17/2013-06/71202.htm 2016年中学教师教学工作计划 http://www.135995.com/show/3329.html 2016年小学教师教学工作计划 http://www.135995.com/show/3328.html