c#創建安裝windows服務

背景:最近在做設備數據對接采集時,遇到一些設備不是標準的Service-Client接口,導致采集的數據不夠準確;比如設備如果中途開關機后,加工的數量就會從0開始重新計數,因此需要實時監控設備的數據,進行疊加處理;考略到工廠設備比較多,實時監聽接口的數據為每秒3次,因此將設備的數據先存到數據庫,在進行結算顯示;因此windows服務作為首選,有兩方面的優點,獨立的windows服務不會占據應用線程,減少應用間的等待延時;windows服務獨立于應用,只需將結算的數據放到指定位置(數據表中),前臺在指定位置獲取數據,不會影響用戶在應用上的操作。

一、Windows服務概述

1.1、Windows服務是什么?

Windows服務是在Windows操作系統上,以后臺形式運行的應用程序。它們可以在系統啟動時自動啟動,并且獨立于用戶登錄。Windows服務通常用于執行那些長時間運行、無需用戶交互或需要在后臺持續執行的任務。

1.2、Windows能用來做什么?

后臺任務和自動化:可以使用Windows服務來執行重復性的計劃任務、數據同步、定期備份、報告生成等。

網絡服務:Windows服務可以作為網絡服務器提供網絡服務,如Web服務器、FTP服務器、郵件服務器等。

定時任務:Windows服務可以創建定時任務并在指定時間間隔或特定事件發生時觸發執行操作。

數據處理:可以使用Windows服務進行數據處理、數據轉換、數據清洗等批量處理任務。

消息隊列:可以用于消息隊列的消費者,后臺任務一直和消息隊列保持長連接,需要消費時會自動接收到進行業務處理。

1.3、Windows服務有什么優勢?

后臺執行:Windows服務在后臺運行,不會干擾用戶的工作,也無需用戶登錄即可持續執行任務。

系統級別權限:Windows服務可以在系統級別運行,具有更高的權限,可以訪問系統資源和執行敏感操作。

自動啟動:Windows服務可以在系統啟動時自動啟動,確保任務始終處于運行狀態。

可靠性和穩定性:Windows服務被設計為長時間運行的應用程序,具有較高的可靠性和穩定性。

二、創建Windows服務

2.1、創建Windows服務項目

打開【Visual Studio】開發工具,然后選擇【 Windows 服務(.NET Framework) 】,點擊下一步。

注意:Windows服務只有在.NET Framework版本中才有了,在跨平臺中使用Worker Service

 

修改項目名稱和項目存儲目錄,項目名稱我寫的是【MyDemoService】,然后框架我選擇的是【.NET Farmework 4.8】,這個可以根據自己的需要填寫和選擇,然后點擊【創建】。 

創建好的目錄如下:【Program.cs】是主程序的入口,【Service1.cs】是服務的入口,可以創建多個,然后在Prodrams.cs中配置就好了。 

 【Service1】服務名稱可以重命名修改,此處我重命名為【MyDemoService】, Program.cs文件中也相對應的也要進行修改。

 然后我們就可以在【MyDemoService】中寫業務邏輯代碼了,有很多種方式可以定位到要寫的具體文件,先列舉兩種常用的。

 方法一:在【program.cs】文件中,找到這個類,按鍵盤上的F12可以直接進入查看文件

 方法二:直接右擊,然后點擊【查看代碼】。

 業務代碼寫到這里面:

到這一步服務就創建好了,然后就寫具體的業務代碼就行了。注意:服務必須至少重寫 OnStart 和 OnStop 才有用。 

此外服務中還又OnPause和OnContinue方法,是在服務啟動后暫停和恢復時使用的。

2.2、服務可以重寫的方法 

2.3、配置日志(log4net)

為了方便測試,先介紹一下如何使用log4net做日志記錄,當日志啟動時和停止時我們記錄一下。

我們在項目目錄下新建一個文件夾【LogConfig】,然后再創建一個文件為【log4net.config】。

【log4net.config】內容如下。 

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    </configSections>

    <system.web>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696222.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696222.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696222.shtml

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

相關文章

外包干了三年,技術算是廢了。。。

先說一下自己的個人情況&#xff0c;大專生&#xff0c;17年通過校招進入湖南某軟件公司&#xff0c;干了接近5年的手工測試&#xff0c;今年年初&#xff0c;感覺自己不能夠在這樣下去了&#xff0c;長時間呆在一個舒適的環境會讓一個人墮落!而我已經在一個企業干了五年的手工…

LeetCode.106. 從中序與后序遍歷序列構造二叉樹

題目 106. 從中序與后序遍歷序列構造二叉樹 分析 前面講過根據前序和中序構建二叉樹&#xff1a;博客鏈接 這道題是告訴我們一顆二叉樹的后序和中序&#xff0c;讓我們根據后序和中序構造出整顆二叉樹。 拿到這道題&#xff0c;我們首先要知道中序的后序又怎樣的性質&#…

云上業務一鍵性能調優,應用程序性能診斷工具 Btune 上線

- 01 - 終于等來了預算&#xff0c;這就把服務遷移到最新的 CPU 平臺上去&#xff0c;這樣前端的同事立馬就能感受我們帶來的速度提升了。可是…… 這些性能指標怎么回事&#xff1f;不僅沒有全面提升&#xff0c;有些反而下降了。不應該這樣啊&#xff0c;這可怎么辦&#xf…

使用單一ASM-HEMT模型實現從X波段到Ka波段精確的GaN HEMT非線性仿真

來源&#xff1a;Accurate Nonlinear GaN HEMT Simulations from X- to Ka-Band using a Single ASM-HEMT Model 摘要&#xff1a;本文首次研究了ASM-HEMT模型在寬頻帶范圍內的大信號準確性。在10、20和30 GHz的頻率下&#xff0c;通過測量和模擬功率掃描進行了比較。在相同的頻…

day05-進程通信

1> 將互斥機制的代碼實現重新敲一遍 代碼&#xff1a; #include<myhead.h>int num520;//臨界資源//1.創建互斥鎖 pthread_mutex_t fastmutex;//定義任務函數 void *task1(void *arg){printf("1111111\n");//3.臨界區上面獲取鎖資源&#xff08;上鎖&#…

LeetCode每日刷題:101. 對稱二叉樹

題目&#xff1a; 解題思路&#xff1a;可以新寫一個函數&#xff0c;從root開始&#xff0c;root的left的頭結點將記為lefttree&#xff08;左子樹&#xff09;,root的lright的頭結點將記為righttree&#xff08;右子樹&#xff09;&#xff0c; 然后遞歸左子樹的root.left與右…

【鴻蒙 HarmonyOS 4.0】TypeScript開發語言

一、背景 HarmonyOS 應用的主要開發語言是 ArkTS&#xff0c;它由 TypeScript&#xff08;簡稱TS&#xff09;擴展而來&#xff0c;在繼承TypeScript語法的基礎上進行了一系列優化&#xff0c;使開發者能夠以更簡潔、更自然的方式開發應用。值得注意的是&#xff0c;TypeScrip…

Python:Keyboard Interrupt - 當代碼遇到“Ctrl+C“時發生了什么?

Python&#xff1a;Keyboard Interrupt - 當代碼遇到"CtrlC"時發生了什么&#xff1f; &#x1f308; 個人主頁&#xff1a;高斯小哥 &#x1f525; 高質量專欄&#xff1a;【Matplotlib之旅&#xff1a;零基礎精通數據可視化】 &#x1f4a1; 創作高質量博文&#x…

Web服務器集群: kylin 部署 Halo博客系統

目錄 一、實驗 1.環境 2. kylin 部署mysql數據庫 3. kylin 構建Java運行環境 4. 創建博客使用的數據庫 5. kylin 部署 halo博客系統 6. kylin 部署nginx 7. kylin 使用 SSL證書基于https訪問部署的博客系統 二、問題 1.mysql安裝報錯 2.查看mysql數據庫報錯 3.syste…

【k近鄰】 K-Nearest Neighbors算法k值的選擇

【k近鄰】 K-Nearest Neighbors算法原理及流程 【k近鄰】 K-Nearest Neighbors算法距離度量選擇與數據維度歸一化 【k近鄰】 K-Nearest Neighbors算法k值的選擇 【k近鄰】 Kd樹的構造與最近鄰搜索算法 【k近鄰】 Kd樹構造與最近鄰搜索示例 k近鄰算法&#xff08;K-Nearest Neig…

jdk動態代理與CGLib動態代理

jdk動態代理 目標對象 package com.study;/*** 目標對象&#xff08;被代理的對象&#xff09;**/ public class Target implements TargetInf{public String name;public Target() {}public Target(String name) {this.name name;}public String buyCola (String name){Sys…

【SQL注入】靶場SQLI DUMB SERIES-24通過二次注入重置用戶密碼

先使用已知信息admin/admin登錄進去查下題&#xff0c;發現可以修改密碼 猜測可能存在的SQL語句&#xff1a;UPDATE user SET password新密碼 WHERE user用戶名 and password舊密碼 假設我們知道有個admin用戶&#xff0c;但是不知道其密碼&#xff0c;如何可以將其密碼重置&…

雜題——1097: 蛇行矩陣

題目描述 蛇形矩陣是由1開始的自然數依次排列成的一個矩陣上三角形。 輸入格式 本題有多組數據&#xff0c;每組數據由一個正整數N組成。&#xff08;N不大于100&#xff09; 輸出格式 對于每一組數據&#xff0c;輸出一個N行的蛇形矩陣。兩組輸出之間不要額外的空行。矩陣三角…

如何在群輝7.2中使用Docker搭建容器魔方服務并遠程訪問【內網穿透】

文章目錄 1. 拉取容器魔方鏡像2. 運行容器魔方3. 本地訪問容器魔方4. 群輝安裝Cpolar5. 配置容器魔方遠程地址6. 遠程訪問測試7. 固定公網地址 本文主要介紹如何在群輝7.2版本中使用Docker安裝容器魔方&#xff0c;并結合Cpolar內網穿透工具實現遠程訪問本地網心云容器魔方界面…

shell中字符串的操作,和shell中數組的操作

獲取長度 rootubuntu:/home/test/Desktop# a"hello world" rootubuntu:/home/test/Desktop# echo ${#a} 11字符串切片 ${parameter:offset} 偏移量 $(parameter:offset:length} 偏移量&#xff1a;長度rootubuntu:/home/test/Desktop# echo ${a:1:2} el截取最后一個…

C#知識點-17(正則表達式)

正則表達式 概念&#xff1a;正則表達式是用來進行文本處理的技術&#xff0c;是語言無關的&#xff0c;在幾乎所有語言中都有實現 元字符&#xff1a; 1、.&#xff1a;匹配除\n之外的任何單個字符。例如正則表達式“b.g”能匹配如下字符串&#xff1a;“big”、“bug”、“…

MySQL 窗口函數溫故知新

本文用于復習數據庫窗口函數&#xff0c;希望能夠溫故知新&#xff0c;也希望讀到這篇文章的有所收獲。 本文以&#xff1a;MySQL為例 參考文檔&#xff1a; https://www.begtut.com/mysql/mysql-window-functions.html 使用的樣例數據&#xff1a;https://www.begtut.com/m…

對象池模式-Object Pool Pattern

原文地址:https://jaune162.blog/design-pattern/object-pool-pattern/ 原文中可下載高清SVG矢量類圖 引言 對象池模式(Object Pool Pattern)是一種創建一組可重用對象的設計模式。它通過維護一個預分配的對象集合,避免了頻繁地創建和銷毀對象所帶來的性能開銷。在需要使用…

力扣_字符串11—實現前綴樹(字典樹、Trie樹)

題目 方法 對于每一個節點&#xff0c;初始化一個長度為26的數組&#xff0c;用來存儲對應字母子節點的地址對于每一個節點&#xff0c;初始化一個 b o o l bool bool 變量用來表示是否為葉子節點 代碼 class Trie { private:vector<Trie*> children vector<Trie…

LeetCode //C - 901. Online Stock Span

901. Online Stock Span Design an algorithm that collects daily price quotes for some stock and returns the span of that stock’s price for the current day. The span of the stock’s price in one day is the maximum number of consecutive days (starting from…