windows服务定时任务

时间:2022-05-01 08:10:51

   其实定时任务时不时会碰到,只不过解决方案也不是只有一个,网上也有很多文章,但是没有一篇说得很清楚,尤其是安装环节,今天就着重说一下安装,

其他步骤带过,C#开发windows服务,开发,安装,调试

1. 添加安装程序  (找的其他博客的配图)

windows服务定时任务

windows服务定时任务

 

之后我们可以看到上图,自动为我们创建了ProjectInstaller.cs以及2个安装的组件。

2)修改安装服务名

右键serviceInsraller1,选择属性,将ServiceName的值改为ServiceTest。

 windows服务定时任务

3)修改安装权限

右键serviceProcessInsraller1,选择属性,将Account的值改为LocalSystem。

 windows服务定时任务

 

2.业务代码(读取配置文件里面的所有节点,然后开启多个定时任务)app.config配置如下:

windows服务定时任务

 

protected override void OnStart(string[] args)
        {

             NameValueCollection urls = ConfigurationManager.AppSettings;

            List<Timer>  timers = new List<Timer> ();
             int i =1;
             foreach (var item in urls)
             {
                 try
                 {
                     string values = urls["url" + i];
                     string[] strs = values.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                     string url = strs[0];
                     int interval = Convert.ToInt32(strs[1]);
                     Timer temp = new Timer();
                     temp.AutoReset = true;
                     temp.Interval = interval;
                     temp.Enabled = true;
                     temp.Elapsed += new ElapsedEventHandler((object sender, System.Timers.ElapsedEventArgs e) =>
                     {
                         try
                         {
                             Http.Get(url);
                         }
                         catch (Exception ex)
                         {
                             Log.LogResult(ex.StackTrace);
                         }

                     });
                     temp.Start();

                     timers.Add(temp);
                 }
                 catch (Exception ex)
                 {

                     Log.LogResult("创建timer失败:"+ex.StackTrace);
                 }
                 i++;
             }
        }

 3. 安装

   如果项目是4.0的,那么要去  C:\Windows\Microsoft.NET\Framework\v4.0.30319    (V4.0开头的就行) 路径下面找到 InstallUtil.exe

  项目如果是2.0的,那么找 C:\Windows\Microsoft.NET\Framework\v2.0.50727  (v2.0 开头就行)  路径下面找到 InstallUtil.exe

   要将服务安装到哪台机就要去哪台机里面找,没有框架就装框架,如果复制本地的文件到远程服务器使用是不行的,微软有安全验证

 将文件installUtil.exe 复制到  Debug目录下面 

  准备工作做好,开始安装: 以管理员身份打开cmd,然后进到Debug目录里面,先试试installutil.exe 有没有用

windows服务定时任务

出现类似页面就说明有用,

执行命令 installutil   serviceTest.exe(服务对应程序名称debug下面的 .exe )

如果出现安装成功字眼,并且没有出现错误字眼,说明服务安装成功

然后去服务里面找到这个服务

windows服务定时任务

4.调试   (调试 => 附加到进程 )

windows服务无法直接运行调试,跟着步骤来: 启动服务才能附加进程调试

windows服务定时任务

如果勾都打上了还找不到,就关闭这个窗口稍微等等再来一次,准能找到

然后就可以愉快的加断点调试了

windows服务定时任务

如果改了代码,需要先停止服务 ,然后重新生成项目,再启动,然后重新附加进程