C#简单windows服务

    由于作后台比较多,因此常常须要写一些后台服务。通常的流程是先建立一个服务项目,加入代码。而后打包一个安装程序或者直接用dos命令安装服务。下面是详细内容:
    1. 建立windows服务项目
        VisualStudio的项目模版里面有一个对应的是windows服务,以下图:
        windows

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

    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. 安装服务spa

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

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

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

下面是一些经常使用的维护:blog

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

   2. 删除服务string

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

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

相关文章
相关标签/搜索