使用Windows service创建一个定时器执行定时任务

一、需求

使用windows service 创建一个定时任务,每隔一段时间写入文件日志,也可以去访问某个网站或者下载数据任务。

二、实现

1、打开Visua studio2022新建一个windows Service程序,我命名为TimerService

使用Windows service创建一个定时器执行定时任务_第1张图片

 使用Windows service创建一个定时器执行定时任务_第2张图片

注意:.NET Framwork框架的选择要与你电脑上的框架一致,我这里选择的是4.7.2

2、在Service1设计器中右击空白处选择查看代码

使用Windows service创建一个定时器执行定时任务_第3张图片 

 3.在Service1.cs中设定
Onstart方法定义定时器的开始执行,执行的时间间隔,以及时间间隔达到后所要执行的方法。

执行了一个文件写入任务,代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.Timers;

namespace TimerService
{
    public partial class Service1 : ServiceBase
    {
        Timer timer;
        public Service1()
        {
            InitializeComponent();
        }

        //启动服务
        protected override void OnStart(string[] args)
        {
            timer = new Timer(1000);
            timer.Elapsed += new ElapsedEventHandler(Timer_Elapsed);
            timer.Start();
            WriteLog("服务启动");
        }

        //停止服务
        protected override void OnStop()
        {
            WriteLog("服务停止");
            timer.Stop();
            timer.Dispose();
        }

        //执行任务
        protected void Timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            WriteLog("服务中。。。");
        }

        //写入文件日志
        protected void WriteLog(string str)
        {
            string filePath = AppDomain.CurrentDomain.BaseDirectory + "Log.txt";
            StreamWriter sw = null;
            if (!File.Exists(filePath))
            {
                sw = File.CreateText(filePath);
            }
            else
            {
                sw = File.AppendText(filePath);
            }
            sw.Write(str + DateTime.Now.ToString() + Environment.NewLine);
            sw.Close();
        }
    }
}

4、在Service1设计器中右击空白处,选择添加安装程序,会添加一个ProjectInstaller设计器

使用Windows service创建一个定时器执行定时任务_第4张图片

5、在ProjectInstaller设计器中选择serviceProcessInstaller,右击查看属性,将Account的值改为LocalSystem

使用Windows service创建一个定时器执行定时任务_第5张图片

 6、在ProjectInstaller设计器中选择serviceInstaller1,右击查看属性,ServiceName就是服务中显示的名称,将其命名TimerService使用Windows service创建一个定时器执行定时任务_第6张图片

 7、右击解决方案,点击生成解决方案

三、安装

1、打开刚刚新建建项目所在的文件夹,找到bin文件下面的debug文件夹,即C:\Users\Administrator\Source\Repos\TimerService\bin\debug,里面有个TimerService.exe应用程序,就是我们所要执行的项目

2、打开文件夹C:\Windows\Microsoft.NET\Framework\v4.0.30319,可以看到里面有一个InstallUtil.exe的应用程序,这就是我们要的安装工具,这里的Framework的版本与我们项目的Framework版本保持一致

3、打开cmd输入cd C:\Users\Administrator\Source\Repos\TimerService\bin\Debug指令,然后再输入C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe /i  TimerService.exe,即可完成安装。

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe /i  WindowsService1

使用Windows service创建一个定时器执行定时任务_第7张图片

 4、启动任务管理器,点击服务,找到名称TemrService的服务,右击启动,即可将创建的定时服务启动,这里的服务名称就是我们在项目的serviceInstaller1的属性里面设置的serviceName

使用Windows service创建一个定时器执行定时任务_第8张图片

 5、在我们的C:\Users\Administrator\Source\Repos\TimerService\bin\Debug文件下面会发现多了一个log.txt的文件,就是我们在项目中创建的日志文件,打开即可看到项目正常执行。

使用Windows service创建一个定时器执行定时任务_第9张图片

 

四、卸载

卸载服务需要在cmd中输入以下指令即可

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe /u  TimerService.exe

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe /u  TimerService.exe

使用Windows service创建一个定时器执行定时任务_第10张图片

 

你可能感兴趣的:(程序设计,c#,开发语言,windows,服务器)