使用C#写一个Windows服务

news2024/11/24 17:06:51
  1. 创建服务程序
    在这里插入图片描述

可能你的VS里面没有【Windows服务】这个模板,那么你就需要通过“打开Visual Studio安装程序“,通过VisualStudio Installer来通过“修改”来安装【.NET桌面开发】
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过上面两个地方均可以进入对应的代码文件

public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            Console.WriteLine("服务启动");
            new Thread(Run).Start();
        }

        protected override void OnStop()
        {
            Console.WriteLine("服务结束");
        }

        private void Run()
        {
            while (true)
            {
                Thread.Sleep(5000);
            }
        }
    }

注意:
很多人在写服务程序时,喜欢把自己线程的代码写在Proram.cs文件中,这个是不正确的,一般都写在服务类中的OnStart方法。因为OnStart方法才是你启动了服务才要开始干的事情。Proram.cs是安装服务完成时就开始干事情了。

通过以上,我们在Visual Studio的解决方案资源管理器中的项目上 右键- 生成 即可生成需要的Windows服务程序exe。
该exe不可直接运行,否则提示
在这里插入图片描述

  1. 安装Windows服务程序
    安装方式一:
    以管理员身份
    (否则,日志提示“在安装的“回滚”阶段发生异常。将忽略该异常并继续回滚。但是,在完成回滚后计算机可能无法完全还原到它的初始状态。“回滚”阶段已成功完成。已完成事务处理安装。安装失败,已执行回滚”等字样)
    打开CMD,进入目录【%systemroot%\microsoft.net\framework\v4.0.30319】使用工具InstallUtil.exe 工具
    安装服务命令 InstallUtil F:\ProjectWorkspace\WindowsService.exe
    卸载服务命令 InstallUtil /u F:\ProjectWorkspace\WindowsService.exe
    在这里插入图片描述
    安装方式二
    创建安装脚本
    在项目中添加2个文件如下(必须是ansi或者utf-8无bom格式):
    1)安装服务脚本install.bat
%systemroot%\microsoft.net\framework\v4.0.30319\installutil.exe windowsservicetest.exe
net start servicetest
sc config servicetest start=auto

第1行安装服务
第2行为启动服务。
第3行为设置服务为自动运行。
如果需要查看脚本运行状况,在脚本最后一行加入pause

2)卸载脚本uninstall.bat

%systemroot%\microsoft.net\framework\v4.0.30319\installutil.exe/u windowsservicetest.exe

服务安装完毕后,如图:
在这里插入图片描述
3. 启动服务失败
出现如下提示框 “。。。某些服务在未由其他服务或程序使用时将自动停止。”
在这里插入图片描述
此时我们可以在计算机日志中查找原因
在这里插入图片描述

  1. 调试服务程序
    首先启动上述服务。

参考:

  1. http://t.zoukankan.com/alunchen-p-5982626.html
  2. https://dianzubuluo.com/%E6%9C%AA%E5%91%BD%E5%90%8D/131456.html
  3. https://www.yisu.com/zixun/129503.html.
  4. https://www.51sjk.com/b22b311003/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/86892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4年功能测试月薪9.5K,4个月时间进阶自动化,跳槽涨薪4k后我的路还很长...

前言 最开始我并不是互联网从业者,是经历了一场六个月的培训才入的行,这个经历仿佛就是一个遮羞布,不能让任何人知道,就算有面试的时候被问到你是不是被培训的,我还是不能承认这段历史。我是为了生存,才选…

使用遗传算法计算神经网络的超参数

遗传算法是基于种群的思想,将问题的解通过编码的方式转化为种群中的个体,并让这些个体不断地通过选择、交叉和变异算子模拟生物的进化过程,然后利用“优胜劣汰”法则选择种群中适应性较强的个体构成子种群,然后让子种群重复类似的…

nginx配置websocket支持wss

和前端联调完项目之后,将项目部署到了开发环境上面。结果这时候发现ws连接报错了,怎么回事,明明和前端在本地都联调好了的! 观察报错发现,提示我们需要使用wss连接,而我和前端在对接联调时使用的是ws连接。…

mysql 学习---窗口函数

文章目录Mysql 8.0新特性窗口函数常见窗口函数Mysql 8.0新特性 窗口函数 理解: 窗口函数的作用类似于在查询中对数据进行分组,类似于聚合函数,但不同的是把聚合函数是分组的记录合成一条,也就是一组一条数据,窗口函数…

缓存击穿、缓存穿透、缓存雪崩

初学者总是喜欢自己吓自己,在听到缓存击穿、缓存穿透、缓存雪崩等问题后,就觉得这根本不是自己这个级别所能接触的知识点,甚至不敢下定决心去了解。 然而,缓存击穿、缓存穿透、缓存雪崩等概念只是听着高大上罢了,实则并…

RabbitMq应用

1.RabbitMQ介绍 1.1现存问题 服务调用:两个服务调用时,我们可以通过传统的HTTP方式,让服务A直接去调用服务B的接口,但是这种方式是同步的方式,虽然可以采用SpringBoot提供的Async注解实现异步调用,但是这…

Spring之AOP

谈起AOP就不得不说起代理,Java 源代码经过编译生成字节码,然后再由 JVM 经过类加载,连接,初始化成 Java 类型,可以看到字节码是关键,静态和动态的区别就在于字节码生成的时机 静态代理:由程序员…

BLE MESH中的Secure Network beacon包

作用:节点使用安全网络信标来识别子网及其安全状态。可以用来更新Key和Iv Index。 数据包结构: 数据包格式: 大小含义 Beacon Type 1安全网络信标(0x01) Flags1包含密钥刷新标志和IV更新标志 Network ID8包含网络ID的值…

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II

今天是链表章节最后一天,加油💪 24. 两两交换链表中的节点 题目:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节…

html练习11:案例仿制

1.目标效果 2.布局效果 3.顶端部分制作效果 问题:img和p无法同时垂直居中显示,img会顶端对齐,p会底部对齐 解决方法:把img作为背景加入;用两个div分别做img和p的容器再进行格式调整 4.导航栏部分制作效果 要点&#…

保证项目如期上线,测试人能做些什么?

要保证项目按照正常进度发布,需要整个研发团队齐心协力。 有很多原因都可能会造成项目延期。 1、产品经理频繁修改需求 2、开发团队存在技术难题 3、测试团队测不完 今天我想跟大家聊一下,测试团队如何保证项目按期上线,以及在这个过程中可能…

词法分析程序

一、实验原理 1.1实验内容 通过本实验,应达到以下目标: 1.掌握从源程序文件中读取有效字符的方法和产生源程序的内部表示文件的方法。 2.掌握词法分析的实现方法。 3.上机调试编出的词法分析程序。 1.2实验内容 词法分析是作为相对独立的阶段来完成的…

C# 事件

一 C#中的事件 大致上:事件-----回调函数; 二 用户界面中的事件 ① 按钮点击事件 ② 基本的写法 this.button1.Clicknew System.EventHandler(this.button1_Click); private void button1_Click(object sender,EventHandler e) {this.label1.TextDat…

C++智能指针weak_ptr

C智能指针weak_ptr 学习路线:C智能指针shared_ptr->C智能指针unique_ptr->C智能指针weak_ptr 简介:本文讲解常用的智能指针的用法和原理,包括shared_ptr,unique_ptr,weak_ptr。 概述 weak_ptr设计的目的是为配合 shared_ptr 而引入…

静电场方程与边界面上的衔接条件 工程电磁学 P6

我们现在已经知道两个公式 我们可以得到微分形式 对于体密度,面密度,线密度,点电荷的理解 很多同学会问空间中为什么要有面密度,线密度的存在呢? 其实这个是模型的需要,因为介质不一定是连续的&#xff0…

如何设计一个高性能的图 Schema

本文整理自青藤云安全工程师——文洲在青藤云技术团队内部分享,分享视频参考:https://www.bilibili.com/video/BV1r64y1R72i 图数据库的性能和 schema 的设计息息相关,但是 NebulaGraph 官方本身对图 schema 的设计其实没有一个定论&#xff…

Codeforces Round #837 (Div. 2) C. Hossam and Trainees

Problem - C - Codeforces 翻译: 胡萨姆有𝑛名学员。他给𝑖-th的学员分配了一个号码𝑎𝑖。 一双𝑖-th和𝑗-th(𝑖≠𝑗)学员被称为成功的如果有一个整数𝑥(&…

基于springboot的企业员工工资管理系统(财务系统)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

Vue渲染器(二):挂载与更新

渲染器(二):挂载与更新 前面介绍了渲染器的基本概念和整体框架,接下来就可以介绍渲染器的核心功能:挂载与更新。 1.挂载子节点和元素的属性: vnode.children的值为字符串类型时,会把它设置为…

019 | 在线电影娱乐网站系统设计含论文 | 大学生毕业设计 | 极致技术工厂

作为一个在线电影娱乐网站系统,它展示给浏览者的是各种电影信息,把这些信息能够按用户的需要友好的展示出来是很重要的,同时,能够实现对这些信息的有条不紊的管理也是不可以忽视的。对浏览者和会员的功能而言叫做前台实现&#xf…