第一步:vs2022創建一個windows服務項目
第二步:從工具箱拖拽出一個timer
第三步:按下圖所示進入,開始編輯業務邏輯
下面給個例子
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.Timers;namespace FlyBookDataProject
{public partial class Service1 : ServiceBase{private Timer timer;public Service1(){InitializeComponent();}protected override void OnStart(string[] args){timer = new Timer(60000); // 60秒間隔timer.Elapsed += OnTimedEvent;timer.AutoReset = true; // 設置為true表示定時器在觸發后會自動重置并重新開始計時timer.Enabled = true; // 啟動定時器}protected override void OnStop(){timer.Stop();timer.Elapsed -= OnTimedEvent;timer.Dispose();}private async void OnTimedEvent(Object source, ElapsedEventArgs e){// 執行你的任務DateTime now = DateTime.Now;if (now.Hour == 8 && now.Minute == 42){writeTxtCls log = new writeTxtCls();log.writeTxtToFile("\r\n[" + System.DateTime.Now.ToString() + "]:開始執行任務");List<userinfo> list = new List<userinfo>();string sql = "select * from vw_QianDaoUserList_base";dynamic dt = Public.DB.SqlQueryable<dynamic>(sql).ToList();foreach (var item in dt){userinfo userinfo = new userinfo();userinfo.id = item.UserId;userinfo.ifqiandao = false;userinfo.dzcount = 0;userinfo.wrong1count = 0;userinfo.wrong2count = 0;userinfo.flag = 1;list.Add(userinfo);}int i = 1;while (true){foreach (var ss in list){int goon = 1;if (!ss.ifqiandao && ss.wrong1count < 2){int asd = Public.DoWork(ss.id);if (asd == 1){ss.ifqiandao = true;}else{ss.wrong1count++;}}else{goon++;}if (ss.dzcount < 5 && ss.wrong2count < 6){int asd = Public.DoWork1(ss.id);if (asd == 1){ss.dzcount++;}else{ss.wrong2count++;}}else{goon++;}if (goon == 3){ss.flag = 2;}}list.RemoveAll(it => it.flag == 2);if (list.Count == 0){log.writeTxtToFile("\r\n[" + System.DateTime.Now.ToString() + "]:任務執行完成");break;}log.writeTxtToFile("\r\n[" + System.DateTime.Now.ToString() + "]:執行第" + i + "次,當前狀態:" + JsonConvert.SerializeObject(list));i++;await Task.Delay(60000);}}}private void timer1_Tick(object sender, EventArgs e){}}
}
第四步:將程序復制到服務器上,并注冊成服務
1、項目重新生成,在項目的bin/Debug下,如果生成了exe文件,比如 MyTimerService.exe
2、在服務器D盤下創建一個文件夾名為MyTimerService
3、將bin/Debug下的所有文件復制到D:/MyTimerService
4、將兩個bat文件復制到C盤下,以管理員身份運行setup.bat
setup
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
installutil /u D:\MyTimerService\MyTimerService.exe
pause
unsetup
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
installutil D:\MyTimerService\MyTimerService.exe
pause