zoukankan      html  css  js  c++  java
  • 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:myservice1"。
          下面是安装命令:sc create hello binPath= "D:myservice1WindowsService1.exe" DisplayName= "hello"

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

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

    下面是一些常用的维护:

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

       2. 删除服务

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

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

  • 相关阅读:
    【爬虫】新闻统计
    python pip 出错 "Can't connect to HTTPS URL because the SSL module is not available.
    【sql server复制】sql server复制【最佳实践】
    mybase个人数据库笔记工具下载
    sqlserver脱机时ldf文件丢失重建
    sqlserver CTE定位点类型和递归部分的类型不匹配
    mysql物理存储(页区段)
    sql server update与delete引发的死锁
    Linux学习笔记(19)linux定时任务(crontab)
    mysql工具生态
  • 原文地址:https://www.cnblogs.com/alala666888/p/3421492.html
Copyright © 2011-2022 走看看