C#简单windows服务

    因为做后台比较多,所以经常需要写一些后台服务。一般的流程是先创建一个服务项目,加入代码。然后打包一个安装程序或者直接用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(1000);
            }
        }
    }

      代码编写完后构建项目,会生成相关的程序集,主要是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 测试

posted @ 2013-11-13 15:42  李土鳖  阅读(568)  评论(0编辑  收藏  举报