当前位置:  编程技术>.net/c#/asp.net

c#创建windows服务入门教程实例

    来源: 互联网  发布时间:2014-10-30

    本文导语:  用c#中创建一个windows服务非常简单,与windows服务相关的类都在System.ServiceProcess命名空间下。 每个服务都需要继承自ServiceBase类,并重写相应的启动、暂停、停止等方法。 windows服务的相关信息是存放与注册表中的,所以他可以...

用c#中创建一个windows服务非常简单,与windows服务相关的类都在System.ServiceProcess命名空间下。

每个服务都需要继承自ServiceBase类,并重写相应的启动、暂停、停止等方法。

windows服务的相关信息是存放与注册表中的,所以他可以在不需要用户登录的情况下自动运行,在c#中你不需要再直接向注册表中添加信息了,c#提供了服务安装类 ServiceProcessInstaller和ServiceInstaller来实现服务的安装。

首先,用vs创建一个windows服务项目

成功后你可以看到

Program中只包含服务运行的相关信息

代码如下:

///
/// 应用程序的主入口点。
///
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()//这里是一个数组,意味着我们可以在一个服务进程中创建多个服务实例,只需要在这里加上即可
};
ServiceBase.Run(ServicesToRun);
}

Service1.cs就是我们需要的服务类,与windows服务相关的基本操作大都可以在这里找到,如:Start,Stop,Pause,Continue等,我们要做的就是根据这些操作做不同的处理就可以了。

我们先在服务Start和Stop时分别记录一条信息到D盘

代码如下:

protected override void OnStart(string[] args)
{
File.AppendAllText("d:" + this.GetType().Name + ".txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss 服务启动"));
}
protected override void OnStop()
{
File.AppendAllText("d:" + this.GetType().Name + ".txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss 服务停止"));
}

一个简单的服务就完成了,下一步添加安装信息

双击项目中的Service.cs转到服务设计界面,在空白处右键选择“添加安装程序”

vs会自动创建一个默认名称为ProjectInstaller.cs的文件并转到相应的设计界面

默认添加两个类 serviceProcessInstaller1和serviceInstaller1,第一个主要用来设置服务所属账户,关系到服务的运行,第二个是服务信息描述,如:服务名、是否自动启动等

右键serviceProcessInstaller1属性,将Account属性选择为LocalSystem

右键serviceInstaller1属性,将StartType属性设为Automatic(自动启动),Description为“我的第一个windows服务”

全部保存后生成,找到生成的程序。

由于windows服务不能通过双击直接运行,所以我们需要借助.net提供的InstallUtil.exe来安装服务。

按回车开始安装,成功后会提示 “提交”阶段已成功完成,如果失败则是“回滚”阶段已成功完成

打开windows服务管理器就能看到我们安装的服务,默认服务安装成功后不会立刻启动,需要我们手动启动

如果不出意外,会显示已启动

到D盘目录下找到Service1.txt,打开会看到我们填入的信息,说明我们做的windows服务已经成功了。

要卸载windows服务可以用InstallUtil.exe /u WindowsService1.exe来卸载或通过系统命令 sc delete 服务名来卸载。


    
 
 

您可能感兴趣的文章:

  • C#下实现创建和删除目录的实例代码
  • C#通过反射创建自定义泛型
  • C#类的创建与初始化实例解析
  • C# 无需COM组件创建快捷方式的实现代码
  • c# 文件(夹)创建与删除
  • c# 泛型类创建带参数和不带参数的构造方法
  • C# 创建文本文件写入读取实现代码
  • c# 文件夹操作(创建或删除)的实现代码
  • c#创建Graphics对象的三种方法
  • C#创建右键菜单方法与示例
  • c#使用linq技术创建xml文件的小例子
  • C#在运行时动态创建类型的实现方法
  • C#使用GDI+创建缩略图实例
  • C#自动创建数据库实现代码
  • c# asp .net 动态创建sql数据库表的方法
  • java开源软件 iis7站长之家
  • 用C#在本地创建一个Windows帐户(DOS命令)
  • C#实现文件复制、移动与创建的实例代码
  • c#创建windows服务(Windows Services)详细步骤
  • c# 文件快速排序(按文件创建时间)的代码
  • T-SQL入门教程之创建与查看数据
  • T-SQL入门教程之创建数据表实例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 各位高手知道在JAVA中如何用一个名称创建一个对象实例,并调用其方法,注意:在编写代码时并不知要创建的对象的类名,也并不知方法名
  • linux redhat5.6安装oracle11g在自动创建实例时停住不动,有图
  • 在Mysql上创建数据表实例代码
  • wince程序防止创建多个实例实现互斥作用
  • 动态创建类实例代码
  • PHP创建桌面快捷方式的实例代码
  • 我不信CSDN上没有人会这个!什么创建一个std::iostream的实例?
  • yii实现创建验证码实例解析
  • asp.net 动态创建控件的演示实例
  • C语言创建链表错误之通过指针参数申请动态内存实例分析
  • 如何使用利用RTTI创建的对象实例??
  • 用模板的方式创建守护进程代码实例
  • Java创建文件夹及文件实例代码
  • 用C和JAVA分别创建链表的实例
  • C 创建链表并将信息存储在二进制文件中读取的实例代码
  • Android中使用IntentService创建后台服务实例
  • Oracle物化视图创建实例
  • 请问,能否创建一个抽象类的实例?一定给分!!!
  • Python创建日历实例
  • LINUX 使用libx编写界面 如何创建Widget 实例的问题,请高手指点
  • C++ Bitsets 成员 Constructors:创建新bitsets
  • 菜鸟在c盘装了win2000,想在剩下的空间装Red Hat Enterprise Linux 3,在创建linux分区的时候,不知道都创建什么分区??我知道要创建一个
  • C++ Double Ended Queues(双向队列) 成员 Constructors:创建一个新双向队列
  • 一进程源源不断地创建文件,另一进程把这些创建的文件抓取并挪走
  • C++ I/O 成员 open():创建一个输入流
  • 创建用户组创建用户出错
  • Xcode介绍及创建工程和工程依赖操作步骤
  • 进程创建进程组后,然后创建该组中的进程,然后终止。这里的终止....?
  • HTML5 sprite 样式创建工具Stitches介绍
  • linux如何创建一个共享内存 可以mount 可以创建目录之类 跟硬盘分区一样
  • java Servlet实现Session创建存取以及url重写代码示例


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3