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.hqwc.cn/news/483405.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot中实现列表数据导出为Excel文件

点击下载《Spring Boot中实现列表数据导出为Excel文件》 1. 前言 本文将详细介绍在Spring Boot框架中如何将列表数据导出为Excel文件。我们将通过Apache POI库来实现这一功能&#xff0c;并解释其背后的原理、提供完整的流程和步骤&#xff0c;以及带有详细注释的代码示例。最…

centos 9 编译安装 LAMP wordpress

[rootlocalhost ~]# ll 总用量 655760 -rw-------. 1 root root 1040 2月 17 16:57 anaconda-ks.cfg drwxr-xr-x. 29 501 games 4096 2月 21 11:00 apr-1.7.4 -rw-r--r--. 1 root root 1122147 2月 21 10:57 apr-1.7.4.tar.gz drwxr-xr-x. 21 501 games …

动态规划记忆化搜索之滑雪

给定一个 R 行 C 列的矩阵&#xff0c;表示一个矩形网格滑雪场。 矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。 一个人从滑雪场中的某个区域内出发&#xff0c;每次可以向上下左右任意一个方向滑动一个单位距离。 当然&#xff0c;一个人能够滑动到某相…

【day02】每天三道 java后端面试题:Java、C++和Go的区别 | Redis的特点和应用场景 | 计算机网络七层模型

文章目录 1. Java、C和 Go 语言的区别&#xff0c;各自的优缺点&#xff1f;2. 什么是Redis&#xff1f;Redis 有哪些特点&#xff1f; Redis有哪些常见的应用场景&#xff1f;3. 简述计算机网络七层模型和各自的作用&#xff1f; 1. Java、C和 Go 语言的区别&#xff0c;各自的…

【免费雾锁王国】2024年新手搭建雾锁王国服务器教程

免费自建雾锁王国Enshrouded服务器&#xff0c;先领取阿里云300元无门槛代金券&#xff0c;然后在雾锁王国Enshrouded专题页一键部署&#xff0c;不需要基础&#xff0c;鼠标点选即可10秒钟创建一台雾锁王国游戏服务器&#xff0c;超简单&#xff0c;阿里云服务器网aliyunfuwuq…

vulfocus靶场搭建

vulfocus靶场搭建 什么是vulfocus搭建教程靶场配置场景靶场编排靶场优化 什么是vulfocus Vulfocus 是一个漏洞集成平台&#xff0c;将漏洞环境 docker 镜像&#xff0c;放入即可使用&#xff0c;开箱即用&#xff0c;我们可以通过搭建该靶场&#xff0c;简单方便地复现一些框架…

简单理解VQGAN

简单理解VQGAN TL; DR&#xff1a;与 VQVAE 类似&#xff0c;隐层压缩表征自回归生成的两阶段图像生成方法。增加感知损失和对抗损失&#xff0c;提高压缩表征模型解码出图片的清晰度。还可以通过编码并预置条件表征&#xff0c;实现条件生成。 隐层压缩表征自回归生成&#…

将本地项目上传到svn服务端和git

一、SVN 1.创建svn库,下面生成了三个文件夹,branches指分支,trunk下可以放项目 2.在本地checkout,填入svn库的地址,因为是新建的,所以checkout的是空文件夹 把自己的项目复制到trunk下,在项目上 右键-TortoiseSVN-add add完之后 右键-svn commit 3.idea打开这个项目,将项目跟…

QPaint绘制自定义仪表盘组件01

网上抄别人的&#xff0c;只是放这里自己看一下&#xff0c;看完就删掉 ui Dashboard.pro QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomm…

第3.4章:StarRocks数据导入——Routine Load

注&#xff1a;本篇文章阐述的是StarRocks-3.2版本的Routine Load导入机制 一、概述 Routine Load&#xff08;例行导入&#xff09;支持用户提交一个常驻的导入任务&#xff0c;可以将消息流存储在 Kafka 的Topic中&#xff0c;通过订阅Topic 中的全部或部分分区的消息&#…

使用JDBC操作数据库(IDEA编译器)

目录 JDBC的本质 ​ JDBC好处 JDBC操作MySQL数据库 1.创建工程导入驱动jar包 2.编写测试代码 ​相关问题 JDBC的本质 官方(sun公司) 定义的一套操作所有关系型数据库的规则&#xff0c;即接口各个数据库厂商去实现这套接口&#xff0c;提供数据库驱动jar包我们可以使用这…

基于FPGA的二维DCT变换和逆变换verilog实现,包含testbench

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 数据导入到matlab显示图像 2.算法运行软件版本 vivado2019.2 matlab2022a 3.部分核心程序 timescale 1ns / 1ps // // Company: // Engineer:…