如何開發一個運行在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.pswp.cn/pingmian/92202.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92202.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92202.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

本地組策略編輯器無法打開(gpedit.msc命令異常)

一、本地組策略編輯器打開方式1、直接搜索打開&#xff08;1&#xff09;在搜索欄中直接輸入以下內容進行搜索本地組策略編輯器&#xff08;2&#xff09;搜索到后直接點擊打開即可&#xff08;但是一部分同志無法搜索到&#xff0c;搜索到的內容基本都是網頁信息而非本地系統的…

kafka部署集群模式

Kafka部署&#xff08;3.7&#xff09; 生產環境推薦的kafka部署方式為operator方式部署&#xff0c;Strimzi是目前最主流的operator方案。集群數據量較小的話&#xff0c;可以采用NFS共享存儲&#xff0c;數據量較大的話可使用local pv存儲 部署operator operator部署方式為he…

C語言中級_動態內存分配、指針和常量、各種指針類型、指針和數組、函數指針

0、前言&#xff1a; 動態內存分配是一個重要概念&#xff0c;要和靜態數組對比著學習&#xff1b;指針和數組搭配在一起&#xff0c;讓指針理解的難度上了一個臺階&#xff0c;尤其是二維數組搭配指針&#xff0c;要獲取數組的值&#xff0c;什么時候“取地址”&#xff0c;什…

單變量單步時序預測:CNN-GRU卷積神經網絡結合門控循環單元

目錄預測效果1. **CNN-GRU的基本原理**2. **應用場景**3. **模型結構與實現**4. **優勢與挑戰**5. **相關研究與實現**6. **未來發展方向**結論代碼設計預測效果 CNN-GRU卷積神經網絡結合門控循環單元是一種結合了卷積神經網絡&#xff08;CNN&#xff09;和門控循環單元&#…

MonoFusion 與 Genie 3

卡內基梅隆大學的研究者發明了一種叫 MonoFusion 的新技術&#xff0c;它能用很少的普通相機&#xff08;比如4個&#xff09;&#xff0c;就能拍出像電影特效一樣細膩流暢的動態3D場景&#xff08;4D重建&#xff09;&#xff0c;比如彈鋼琴、修自行車這種復雜動作&#xff0c…

kubernets命令行創建Token并附加權限給dashboard控制臺登錄

1、創建登錄token kubectl create token default -n graph-node-test dgjeojrgopejgeropjgpsdjgerjglsdjfsjogjeojgeorjgortlfhj4yu493460uwperg3wef;lsj2y3r934tnrhifrlfe9t4h5tlhobdrmlgw485tw4yp653ut9ogogjerolj4w9erjgotj3fgjletyj49yr20o359truyo5u6908430jt5grjsdtgj49…

什么是SpringBoot

題目詳細答案Spring Boot 是由 Pivotal 團隊提供的一個基于 Spring 框架的項目&#xff0c;它旨在簡化 Spring 應用的開發和部署。Spring Boot 通過提供一系列的約定和開箱即用的功能&#xff0c;使得開發者可以更快地構建獨立的、生產級的 Spring 應用程序&#xff0c;而無需進…

從零開始設計一個分布式KV存儲:基于Raft的協程化實現

從零開始設計一個分布式KV存儲&#xff1a;基于Raft的協程化實現 本文將以一個最小可運行的分布式KV系統為例&#xff0c;帶你拆解如何用C、Raft算法和協程模型構建高可用的Key-Value存儲。 一、為什么需要分布式KV&#xff1f; 單機KV&#xff08;如Redis&#xff09;存在單點…

虛擬機或docker的ubuntu無界面安裝完成后鏡像源設置

ubuntu系統源 在裝好虛擬機或者docker鏡像后&#xff0c;直接使用apt update && apt upgrade是無法完更新的。 此時系統中也沒有vim工具&#xff0c;我們可以在清華源的網站中找到幫助文檔。mirrors.tuna.tsinghua.edu.cn/help/ubuntu/為了避免沖突&#xff0c;我們使用…

串口通信02 溫度傳感DS18B20 01 day49

九&#xff1a;串口通信 通信&#xff1a;無線和有線 ? 單工 半雙工 全雙工 并行&#xff1a;多個數據線 串行&#xff1a;一根數據線 同步&#xff1a;通信雙方使用同一個時鐘&#xff0c;SPI信息幀&#xff0c;有CLK引腳 異步&#xff1a;通信雙方使用不同時鐘&#xff0c;雙…

【FreeRTOS 】任務通知

FreeRTOS 任務通知任務通知簡介一 、發送通知1.1 xTaskNotify()1.2 xTaskNotifyFromISR()1.3 xTaskNotifyGive()1.4 xTaskNotifyAndQuery()1.5 xTaskNotifyAndQueryFromISR()二、接收通知2.1 ulTaskNotifyTake()2.2 xTaskNotifyWait()三、清除通知狀態和值3.1 xTaskNotifyState…

Android視圖狀態以及重繪

一、視圖狀態&#xff08;View States&#xff09;1. 五種核心狀態狀態作用修改方法特點enabled視圖是否響應交互setEnabled(boolean)禁用狀態下不響應onTouch事件focused視圖是否獲得焦點requestFocus()需同時滿足focusable和focusableInTouchModewindow_focused視圖所在窗口是…

vue3接收SSE流數據進行實時渲染日志

后端使用的是 Spring Boot WebFlux&#xff08;響應式編程框架&#xff09;&#xff0c;并且返回的是 Server-Sent Events (SSE) 流式數據&#xff0c;那么在 Vue3 中&#xff0c;需要使用 EventSource API 或 fetch 流式讀取 來正確獲取響應內容。方案 1&#xff1a;使用 Eve…

每日五個pyecharts可視化圖表-bars(6)

探索pyecharts庫中條形圖的高級用法與定制技巧 在數據可視化中&#xff0c;條形圖是最常用的圖表類型之一&#xff0c;它能夠清晰地展示不同類別之間的數量對比。今天&#xff0c;我們將繼續學習如何使用pyecharts創建5種不同風格的條形圖。pyecahts源碼 圖表1&#xff1a;帶…

【C語言】文件操作全解析

文章目錄一、為什么需要文件操作&#xff1f;二、認識文件&#xff1a;不止是磁盤上的存儲2.1 程序文件2.2 數據文件2.3 文件名的構成三、文本文件與二進制文件&#xff1a;數據的兩種形態3.1 存儲方式差異3.2 實例對比&#xff1a;整數10000的存儲3.3 二進制文件操作示例四、文…

C結構體的幾種定義形式 + typedef結合使用的好處

struct 語句定義了一個包含多個成員的新的數據類型&#xff0c;struct 語句的格式如下&#xff1a; struct tag { member-list member-list member-list ... } variable-…

SPICE電容矩陣

SPICE電容矩陣: 如果有許多條傳輸線,就可以用下標來標記每一條線。例如,如果有5條線,就用1~5分別標記,依慣例把返回路徑導體標記為導線0。圖10.6給出了5條導線和一個公共返回平面的橫截面圖。首先研究電容器元件,下一節再討論電感器元件。 在這個線的集合中,每對導線之間…

【Java】棧和隊列

文章目錄1.棧1.1 棧的定義1.2 棧的使用1.3 棧的模擬實現2.隊列2.1 隊列的定義2.2 隊列的使用2.3 隊列的模擬實現3.循環隊列3.1 循環隊列的概念3.2 循環隊列判斷空和滿4.雙端隊列Deque1.棧 1.1 棧的定義 棧是一種特殊的線性表&#xff0c;其只允許在固定的一段進行數據的插入或…

【性能測試】---測試工具篇(jmeter)

目錄 1、安裝并啟動jemeter 2、重點組件 2.1、線程組&#xff1a; 2.2、HTTP取樣器?編輯 2.3、查看結果樹 2.4、HTTP請求默認值 2.5、HTTP信息頭管理器 2.6、JSON提取器 2.7、JSON斷言 2.8、同步定時器 2.9、CSV數據文件設置 2.10、HTTP Cookie管理器 3、測試報告…

機器學習(12):拉索回歸Lasso

- 拉索回歸可以將一些權重壓縮到零&#xff0c;從而實現特征選擇。這意味著模型最終可能只包含一部分特征。 - 適用于特征數量遠大于樣本數量的情況&#xff0c;或者當特征間存在相關性時&#xff0c;可以從中選擇最相關的特征。 - 拉索回歸產生的模型可能更簡單&#xff0c;因…