当前位置: 首页 > news >正文

如何开发一个运行在windows系统服务器上的服务

第一步: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
http://www.dtcms.com/a/319207.html

相关文章:

  • “物联网+职业本科”:VR虚拟仿真实训室的发展前景
  • 纳米陶瓷与光子集成:猎板PCB定义下一代VR硬件的技术蓝图
  • 【unity实战】使用Unity程序化生成3D随机地牢(附项目源码)
  • 飞机起落架轮轴深孔中间段电解扩孔内轮廓测量 - 激光频率梳 3D 轮廓检测
  • 如何将Dubbo从Zookeeper平滑地迁移到Nacos?
  • 38.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--增加日志记录器
  • Android视图状态以及重绘
  • Java面试宝典:类加载
  • 利用vue.js2X写前端搜索页面,express写后端API接口展现搜索数据
  • SymPy 中 atan2(y, x)函数的深度解析
  • vue3对比vue2的性能优化和提升 :Vue 3 vs Vue 2
  • ArkTS: McPointChart
  • 【Redis面试精讲 Day 16】Redis性能监控与分析工具
  • 从Web2.0到Web3.0——用户体验如何演进
  • 树莓派安装中文输入法
  • Day09 Tlisa登录认证
  • Linux总线,设备和驱动关系以及匹配机制解析
  • FPGA学习笔记——VGA显示静态图片(ROM IP核)
  • 【博弈 拓扑序 缩点】P9220 「TAOI-1」椎名真昼|省选-
  • Bosco-and-Mancuso Filter for CFA Image Denoising
  • 如何快速掌握Excel公式?14天轻松通关
  • LeetCode 面试经典 150_数组/字符串_除自身以外数组的乘积(13_238_C++_中等)(前缀积)
  • Swift 实战:高效设计 Tic-Tac-Toe 游戏逻辑(LeetCode 348)
  • 解决chrome下载crx文件被自动删除,加载未打包的扩展程序时提示“无法安装扩展程序,因为它使用了不受支持的清单版本解决方案”
  • 冷库温湿度物联网监控系统解决方案:冷链智能化
  • 普通冷库如何升级物联网冷库?工业智能网关赋能冷链智能化转型
  • AI摄像机如何为煤矿减少90%违规事故?
  • HarmonyOS 页面跳转新方案:HMRouter 路由框架全方位使用指南与实践案例
  • Axure 高阶设计:打造“以假乱真”的多图片上传组件
  • 如何使用vLLM运行gpt-oss