当前位置: 首页 > 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.lryc.cn/news/613351.html

相关文章:

  • 跨学科视域下的深层语义分析与人类底层逻辑一致性探索
  • 性能优化——GPU的影响
  • 基于Matlab图像处理的黄豆自动计数系统设计与实现
  • sklearn study notes[3]
  • Nuxt.js 国际化配置完整教程(含版本兼容与问题解决)
  • 驱动-设备树插件注册子系统
  • 【Bluedroid】蓝牙音频接收端活动设备切换机制深度解析(sink_set_active_device)
  • Maven私服搭建--Nexus-3.82.0 Linux环境
  • mysql基础-聚合函数
  • 二叉树算法之【中序遍历】
  • 打靶日记-PHPinclude-labs(一)
  • CS231n2017 Lecture14 强化学习笔记
  • 【MySQL基础篇】:MySQL事务并发控制原理-MVCC机制解析
  • 安卓开发:网络状态监听封装的奥秘
  • 力扣 hot100 Day68
  • 关于vue2中对接海康摄像头以及直播流rtsp或rtmp,后台ffmpeg转码后通过ws实现
  • ADC、Flash、SPI、watchdog
  • Linux 磁盘中的文件
  • 多线程问题,子线程同时操作全局变量,使用后需要清空吗 ?
  • 容器之王--部署Docker私有仓库harbor母盘步骤演练
  • 小米前端笔试和面试
  • AI日报0807 | GPT-5或今晚1点来袭:四大版本全曝光
  • 使用Ollama本地部署DeepSeek、GPT等大模型
  • 13-netty基础-手写rpc-消费方生成代理-05
  • 车辆特征与车牌识别准确率↑29%:陌讯多模态融合算法实战解析
  • [spring-cloud: 动态刷新]-源码分析
  • 基于MATLAB实现支持向量机(SVM)分类
  • android 之 Kotlin中Handler的使用
  • 栅栏密码的加密解密原理
  • zookeeper因jute.maxbuffer启动异常问题排查处理