因为做后台比较多,所以经常需要写一些后台服务。一般的流程是先创建一个服务项目,加入代码。然后打包一个安装程序或者直接用dos命令安装服务。下面是详细内容:
    1. 创建windows服务项目
        VisualStudio的项目模版里面有一个对应的是windows服务,如下图:
        

选择上面的模版新建项目后,服务的主程序代码在Service1.cs里面,右击这个文件选择查看代码。下面的代码是一个简单的例子,真正的项目里面一般会调用我们自己写的一些库来实现比较复杂的逻辑,不过大部分情况下都是开个线程跑一个循环。

    public partial class Service1 : ServiceBase
{
private Thread t;
public Service1()
{
InitializeComponent();
t = new Thread(Run);
} protected override void OnStart(string[] args)
{
t.Start();
} protected override void OnStop()
{
t.Abort();
} private void Run()
{
while (true)
{
File.AppendAllText(AppDomain.CurrentDomain.BaseDirectory + "\\xx.txt", DateTime.Now.ToString() + Environment.NewLine);
Thread.Sleep();
}
}
}

代码编写完后构建项目,会生成相关的程序集,主要是WindowsService1.exe。

2. 安装服务

我一般用命令行来安装服务,所以流程比较简单。我们可以把编译好的程序放到一个指定的目录,比如"D:\my\service1"。
      下面是安装命令:sc create hello binPath= "D:\my\service1\WindowsService1.exe" DisplayName= "hello"

其中,create后面的hello是服务名,另外两个参数分别是程序路径和显示名称。注意选项=符号和值之间有个空格。
       安装时还可以指定依赖等其他选项,具体可以sc create \?来查看。

安装完后打开services.msc会看到新安装的服务,右击启动便可以运行服务了。

下面是一些常用的维护:

1. 更新服务程序
       先停止服务,然后等待一会,然后将新构建的程序集复制到安装目录覆盖老的程序集。
       然后再重新启动服务。

2. 删除服务

sc delete hello
       其中hello是服务名称。

3. 修改服务描述。
       sc description [服务名称] [描述]
       sc description hello 测试

C#简单windows服务的更多相关文章

  1. c#创建、安装、卸载、调试windows服务的简单事例

    最近工作中用到了windows服务,对其有深刻理解和丰富经验谈不上,本篇文章只是简单陈诉用c#创建.安装.卸载.调试windows服务的步骤. 一.创建windows服务 1.用VS创建windows ...

  2. 使用Topshelf组件构建简单的Windows服务

    很多时候都在讨论是否需要了解一个组件或者一个语言的底层原理这个问题,其实我个人觉得,对于这个问题,每个人都有自己的看法,个人情况不同,选择的方式也就会不同了.我个人觉得无论学习什么,都应该尝试着去了解 ...

  3. 使用C#开发windows服务定时发消息到钉钉群_群组简单消息

    前言:本提醒服务,是由C#语言开发的,主要由windows服务项目和winform项目组成,运行服务可实现功能:向钉钉自定义机器人群组里,定时,定次,推送多个自定义消息内容,并实现主要功能的日志记录. ...

  4. C# Asp.net Quartz.NET作业调度之创建、安装、卸载、调试windows服务的简单事例

    一.创建windows服务 1.用VS创建windows服务,结果如下: 2.删除默认生成的Service1.cs文件,然后创建自己的服务文件(如:MyService),并修改Program.cs文件 ...

  5. windows服务 MVC之@Html.Raw()用法 文件流的读写 简单工厂和工厂模式对比

    windows服务   public partial class Service1 : ServiceBase{ System.Threading.Timer recordTimer;public S ...

  6. C#创建、安装、卸载、调试Windows Service(Windows 服务)的简单教程

    前言:Microsoft Windows 服务能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面.这 ...

  7. C#开发Windows服务 附简单实例实现禁止QQ运行

    本实例主要实现下面三个基本功能 1.C#开发windows服务 2.禁止QQ等程序运行 3.为windows服务创建自动安装程序 下面针对这三个基本功能进行实现 一.C#开发windows服务 Win ...

  8. 单线程与多线程的简单示例(以Windows服务发短信为示例)

    单线程示例: public delegate void SM(); SM sm = new SM(() =>    {                    while (true)       ...

  9. 创建Windows服务简单流程

    1.首先打开VS2010(或者其他版本),创建Windows服务项目 2.创建完成后切换到代码视图,代码中默认有OnStart和OnStop方法执行服务开启和服务停止执行的操作,下面代码是详细解释: ...

随机推荐

  1. scala函数组合器

    1.map 在列表中的每个元素上计算一个函数,并且返回一个包含相同数目元素的列表. scala> numbers.map(_ * 2)res3: Array[Int] = Array(2, 4, ...

  2. ASP.NET MVC5学习笔记之Filter提供体系

    前面我们介绍了Filter的基本使用,但各种Filter要在合适的时机运行起来,需要预先准备好,现在看看ASP.NET MVC框架是怎么做的. 一.Filter集合 在ControlerActionI ...

  3. 十天学会单片机Day4串行口通信

    并行与串行基本通信方式 1.并行通信方式 通常是将数据字节的各位用多条数据线同时进行传送. 并行通信控制简单.传输速度快:由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难. 2.串行通 ...

  4. iOS开发常用的宏

    #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)#define SCREEN_HEIGHT ([UIScreen mainS ...

  5. Java 控制台执行带自定义包定义的类,出现“Exception in thread "main" java.lang.NoClassDefFoundError: ConnectSQLServer (wrong name: sine/ConnectSQLServer)”

    1.先说明一下代码实现:自定义package sine, 源代码保存路径为:E:\JSP\HibernateDemo\HibernateDemoProject\src\sine\ConnectSQLS ...

  6. 菜鸟学习Struts——总结

    一.原理 客户端请求到ActionSeverlet,ActionSeverlet负责截URL进行分发分发到每一个Action上,Action负责和Model打交道然后把相关信息返回到ActionSev ...

  7. hdu 1269 迷宫城堡

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1269 迷宫城堡 Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个 ...

  8. mousewheel滚轮事件

    原生的滚轮事件:火狐与其他浏览器使用了不同的事件 /* * 滚轮事件只有firefox比较特殊,使用DOMMouseScroll; 其他浏览器使用mousewheel; * */ // firefox ...

  9. iOS7 隐藏状态栏 hide statusBar

    1.调用 [self setNeedsStatusBarAppearanceUpdate]; 2.重载以下函数 - (BOOL)prefersStatusBarHidden{ return _hide ...

  10. Qt入门1---widget、mainwindow和Dialog区别

    摘要: 看了一个月的Qt,居然没有理清Qt中 ------------------------------------ 1.QMainWindow A main window provides a f ...