本文将为大家详细介绍如何用C#编写一个系统服务,当然肯定不是教大家从头写,而是在一个搭建好的框架上进行自我创作!

一、项目整体架构

本项目的开发是针对某设备的开启异常情况进行邮件提醒,针对监控到的未开启情况进行层层逻辑判断其设备是否是在工作时间未开启或者异常客观原因,然后再向相关责任人发送邮件提醒及时处理。

二、站在巨人的肩膀上开始创作

假设你现在有一个搭建好的WindowsService项目的框架,你要将其改造成自己需要的系统服务去定时执行一些操作功能,那就请认真看下面的介绍。

1、修改项目名称

首先将解决方案名字改成自己需要的,当然可能内置的一些文件已经在建立新项目的时候自动生成的无法更改,但不影响你的使用哦。

右键鼠标,点击重命名,改成自己的,当然这个还不够,可以使用查找替换,将以前的名称涉及到的地方全部替换成自己修改的(需要注意查找条件的设置,否则会替换错)

2、修改属性

对于服务的安装程序进行属性修改,改成自己想要的,具体如下。

对服务日志进行属性修改,改成自己的,具体如下。

3、编写自己的逻辑代码,实现功能

需要注意的点:

(1)服务日志的映射,这样写好之后,就可以在对应资源下看到我们服务的日志记录啦。

(2)日志写入方法,这样在服务执行过程中,你希望它什么时候给你反馈信息,你就在哪里添加这个方法和你想要的信息即可,后续方法会有相关例子出现。

(3) 服务启动方法,可在这个方法里设置服务间隔多少时间执行,执行什么事件,写日志信息。

(4)服务停止方法,停止服务同时停止计时器及其事件。

3、测试服务代码

在部署系统服务之前,必须先保证自己的代码逻辑正确,能实现对应功能,因此需新建一个窗体进行测试功能是否能正常、准备执行。如何测试呢?很简单,先把自己编写的业务逻辑代码全部复制到这个窗体中,除开专门对应服务的方法( Service1()、WriteLog(string EventName, string Message)、OnStart(string[] args)、OnStop())。

别忘了这里的启动项也需要修改哦!

等调试成功,这个WindowsService就可以部署到服务器上了。

三、部署服务

1、准备好前人开辟好的安装服务、卸载服务的bat文件。

2、分别邮件选择编辑,即可看到一个记事本,将里面的内容修改为自己的保存即可。

3、准备好一切后,就可以开始部署了,直接将该安装卸载程序复制到对应服务器目录下,同时将Debug里面的东西全部复制到相同目录下。

再以管理员身份运行安装服务,等待安装完成后,进入计算机管理,找到服务进去查看自己的服务是否安装成功。注意:每次重新安装服务后,第一次都需要手动启动一下。每次卸载服务之前都需要先停止该服务之后,再运行卸载服务。

以上就是所有的在搭建好的系统服务项目基础上进行编写修改自己的WindowsService。

如果有小伙伴想从新建项目开始进行编写WindowsService,可以参考下面这些文档哦。

C# 创建Windows Service(Windows服务)程序_夏二咩的博客-CSDN博客_c# service

C# 开发Windows Service_、极客飞鹏の的博客-CSDN博客_c# windows service

C#创建Windows Service(Windows 服务)基础教程 - 走看看

在c#中创建Windows服务 - 码农教程

C#编写windows服务程序

站在巨人的肩膀上:C#编写WindowsService相关推荐

  1. 【Visual C++】游戏开发笔记三十五 站在巨人的肩膀上:游戏引擎导论

    看到在留言中很多朋友提到不太清楚DirectX与游戏引擎的区别的问题,在这里浅墨就专门把自己对游戏引擎的一些理解写成一篇文章,作为我们<Visual C++游戏开发>专栏的游戏引擎导论,也 ...

  2. 游戏开发笔记三十五 站在巨人的肩膀上:游戏引擎导论

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8250057 作者:毛星云(浅墨 ...

  3. 双引擎架构 Vite 是如何站在巨人的肩膀上实现的?

    在前面的章节中,我们学习了很多 Vite 使用和项目搭建的内容.接下来让我们将目光集中到 Vite 本身的架构上,一起聊聊它是如何站在巨人的肩膀上实现出来的.所谓的巨人,指的就是 Vite 底层所深度 ...

  4. 如何写出高质量代码——站在巨人的肩膀上

    如何写出高质量代码--站在巨人的肩膀上 高质量代码的三要素:可读性,可维护性,可变更性 可读性强 可维护性:适应软件在部署和使用中的各种情况 1.3 可变更性:因需求变化而对代码进行修改 牛顿曾经说过 ...

  5. 站在巨人的肩膀上-像kubernetes一样用etcd存储自定义对象

    背景 众所周知,kubernetes利用etcd存储API对象,例如Pod.Deployment.StatefulSet等等.笔者认为kubernetes这种API对象的设计方案当前来看非常先进,基于 ...

  6. 站在巨人的肩膀上“思考”问题,重在思考而不是拿来主义

    米老师按:觉得值得讨论的小文!我还要认真地想一想 主题:围绕职责链设计模式-计算收费有效时间博客展开讨论 参与人: 讨论时间: 讨论内容 这次讨论主要分为以下几点: 一.职责链模式应用于机房收费系统计 ...

  7. 站在巨人的肩膀上看Servlet——原来如此(更适合初学者认识Servlet)

    前言: 有段时间没更新博客了,这段时间因为要准备考试,考完试后又忙了一阵别的事,一直没能静下心来写博客.大学考试真是越来越恶心了,各种心酸,那酸爽,够味.不过还好,马上就要大三了,听大三学长学姐说大三 ...

  8. “站在巨人的肩膀上”

    站在巨人的肩膀上需要拥有巨人的实力 容易错误理解成:"盗取"巨人的成果并漠视了巨人

  9. 3小时快速入门数学建模竞赛-建模技巧2:追根溯源,站在巨人的肩膀上

    我们要检索哪些信息?和怎样获得快速.准确的信息?这两个问题. 首先回答第一个问题,我们需要检索哪些信息?我们从我们需要求解的内容入手,请看思维导图和系统框图,我们需要求解35年寿命期内的发电总量.经济 ...

最新文章

  1. 为什么说百度教育大脑3.0,是中国教育迎来的真正智慧大脑?
  2. html照片与照片之间的间隔,css设置图片之间的间隔的方法
  3. Android之用Intent.FLAG_ACTIVITY_CLEAR_TOP解决界面重复拉起问题
  4. eclipse启动tomcat不能正常访问问题
  5. qt如何实现backspace的功能_如何实现知识星球列表拖拽功能
  6. Windows直接获取文件的哈希值
  7. atitit 编程语言概念与原理
  8. Atitit 2016 技术趋势与没落技术 目录 1.1. 离线优先Web应用程序(Offline first web applications) 1 1.2. 依照产品而不是项目(product
  9. 当安装完Windows系统后出现“系统保留”分区该怎么办?
  10. HTML5 颜色及透明度
  11. 计算机考博面试题,交大系统博士笔试和面试题目
  12. Sasha and a Bit of Relax K倍区间 (前缀和异或 前缀和计数 思维)
  13. 一个屌丝程序猿的人生(七十九)
  14. Debian11.5和Ubuntu22.04安装fcitx5中文输入法(五笔拼音)
  15. C语言 平面向量加法
  16. Simulink的S函数的离散仿真
  17. 安信可ESP32-CAM摄像头开发demo--局域网拍照、实时视频、人脸识别
  18. ubuntu20.04中安装Flatpak,切换数据源
  19. 【考试】职称英语考试那些事儿
  20. 小白都能懂的 玩转docker系列之 Mysql同步数据

热门文章

  1. 国民视觉健康高峰论坛李绍伟建言:青少年视力保护应筑好三道墙
  2. 常见容错机制:failover ,failsafe,failfase ,failback,forking
  3. 卷积云神经网络_大气光学质量,Optical air mass,音标,读音,翻译,英文例句,英语词典...
  4. table 表格细线条实现方式
  5. Ruby 札记 - Ruby 集合家族之数组(Array)
  6. base64加密原理解析
  7. 金三银四,二月就要准备!
  8. 那目不转睛的气味 - 最佳香水女性必看
  9. logstash收集windows eventlog
  10. 技术分享 | Airsim初探-用游戏引擎做仿真