C#创建Windows服务(Windows Services) 实战之系统定时重启服务

C# Windows Service入门 Windows服务入门 阅读详情

//服务器重启服务,作者:柳永法 [url]www.yongfa365.com[/url]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.IO;
using System.Text;
using System.Timers;


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

        protected override void OnStart(string[] args)
        {
            // TODO: 在此处添加代码以启动服务。
            double sleeptime = ValidatorDate1(System.DateTime.Now.ToString("yyy-MM-dd HH:mm:ss"), System.DateTime.Now.ToString("yyy-MM-dd ") + "07:00:00");
            if (sleeptime < 0) sleeptime += 24 * 60 * 60 * 1000;
            writestr("开始",sleeptime);
            System.Timers.Timer t = new System.Timers.Timer(sleeptime);//实例化Timer类,设置间隔时间为10000毫秒;
            t.Elapsed += new System.Timers.ElapsedEventHandler(rebootsystem);//到达时间的时候执行事件;
            t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
            t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
            writestr("结束", sleeptime);
        }
        public void rebootsystem(object source, System.Timers.ElapsedEventArgs e)
        {
            System.Diagnostics.Process.Start("shutdown", "/r /f /t 0");
        }

        public static double ValidatorDate1(string strDateA, string strDateB)
        {
            string strFrom = strDateB;
            string strTo = strDateA;
            TimeSpan ts = Convert.ToDateTime(strFrom) - Convert.ToDateTime(strTo);
            double count = ts.TotalSeconds * 1000;
            return count;
        }


        public void writestr(string readme,double sleeptime)
        {
            //debug==================================================
            StreamWriter dout = new StreamWriter(@"c:/" + System.DateTime.Now.ToString("yyyMMddHHmmss") + readme + ".txt");
            dout.Write("/nSleepTime:" + Convert.ToString(sleeptime) + "/n操作时间:" + System.DateTime.Now.ToString("yyy-MM-dd HH:mm:ss"));
            //debug==================================================
            dout.Close();
        }

        protected override void OnStop()
        {

        }
    }
}

 

==================================================================

 

  • 用C#创建Windows服务(Windows Services)   
  •   
  • Windows服务在Visual Studio 以前的版本中叫NT服务,在VS.net启用了新的名称。用Visual C# 创建Windows服务不是一件困难的事,本文就将指导你一步一步创建一个Windows服务并使用它。这个服务在启动和停止时,向一个文本文件中写入一些文字信息。   
  •   
  •  第一步:创建服务框架    
  • 要创建一个新的 Windows 服务,可以从Visual C# 工程中选取 Windows 服务(Windows Service)选项,给工程一个新文件名,然后点击 确定。   
  •   
  • 你可以看到,向导向工程文件中增加WebService1.cs类:   
  •   
  • 其中各属性的含意是:   
  •   
  •         Autolog                 是否自动写入系统的日志文件   
  •   
  •         CanHandlePowerEvent     服务时候接受电源事件   
  •   
  •         CanPauseAndContinue          服务是否接受暂停或继续运行的请求   
  •   
  •         CanShutdown 服务是否在运行它的计算机关闭时收到通知,以便能够调用 OnShutDown 过程   
  •   
  •         CanStop                              服务是否接受停止运行的请求   
  •   
  •         ServiceName                       服务名   
  •   
  •     
  •   
  • 第二步:向服务中增加功能    
  • 头部添加using System.IO;   
  • 在 .cs代码文件中我们可以看到,有两个被忽略的函数 OnStart和OnStop。    
  •   
  • OnStart函数在启动服务时执行,OnStop函数在停止服务时执行。在这里,当启动和停止服务时,向一个文本文件中写入一些文字信息,代码如下:   
  •   
  • protected override void OnStart(string[] args)   
  • {   
  •     // TODO: 在此处添加代码以启动服务。   
  •     FileStream fs = new FileStream(@"d:/mcWindowsService.txt", FileMode.OpenOrCreate, FileAccess.Write);   
  •   
  •     StreamWriter m_streamWriter = new StreamWriter(fs);   
  •   
  •     m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);   
  •   
  •     m_streamWriter.WriteLine("mcWindowsService:         Service Started" + DateTime.Now.ToString() + "/n");   
  •   
  •     m_streamWriter.Flush();   
  •   
  •     m_streamWriter.Close();   
  •   
  •     fs.Close();   
  • }   
  •   
  • protected override void OnStop()   
  • {   
  •     // TODO: 在此处添加代码以执行停止服务所需的关闭操作。   
  •     FileStream fs = new FileStream(@"d:/mcWindowsService.txt", FileMode.OpenOrCreate, FileAccess.Write);   
  •   
  •     StreamWriter m_streamWriter = new StreamWriter(fs);   
  •   
  •     m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);   
  •   
  •     m_streamWriter.WriteLine(" mcWindowsService: Service Stopped " + DateTime.Now.ToString() + "/n");   
  •   
  •     m_streamWriter.Flush();   
  •   
  •     m_streamWriter.Close();   
  •   
  •     fs.Close();   
  • }   
  •   
  •  第三步: 将安装程序添加到服务应用程序   
  •   
  •  Visual Studio.NET 随附有安装组件,可用来安装与服务应用程序相关联的资源。安装组件在正在安装到的系统上注册一项单个的服务,并使服务控制管理器知道该服务的存在。   
  •   
  • 要正确安装服务,并不需要在安装程序中进行任何特殊编码。但是,如果需要向安装进程添加特殊功能,则可能偶尔需要修改安装程序的内容。   
  •   
  •        将安装程序添加到服务应用程序的步骤是:   
  •   
  • 1:在解决方案中,访问要向其中添加安装组件的服务的Design视图。   
  •   
  • 2:在属性窗口中,单击"添加安装程序"链接,如果没有的话,您在属性下边的,灰色帮助区域右击,选中“命令”然后"添加安装程序"链接就出来了。   
  •   
  • 这时项目中就添加了一个新类 ProjectInstaller 和两个安装组件 ServiceProcessInstaller 和 ServiceInstaller,并且服务的属性值被复制到组件。    
  •   
  • 3:若要确定如何启动服务,请单击 ServiceInstaller 组件并将 StartType 属性设置为适当的值。   
  •   
  •          Manual      服务安装后,必须手动启动。   
  •   
  •          Automatic    每次计算机重新启动时,服务都会自动启动。   
  •   
  •          Disabled     服务无法启动。   
  •   
  • 4:将serviceProcessInstaller类的Account属性改为 LocalSystem   
  •   
  •      这样,不论是以哪个用户登录的系统,服务总会启动。   
  •   
  •     
  •   
  • 第四步:生成服务程序   
  •   
  • 通过从生成菜单中选择生成来生成项目。   
  •   
  • 注意   不要通过按 F5 键来运行项目——不能以这种方式运行服务项目。   
  •   
  • 第五步:安装服务   
  •   
  • 访问项目中的已编译可执行文件所在的目录。    
  • 用项目的输出作为参数,从命令行运行 InstallUtil.exe。在命令行中输入下列代码:    
  • installutil yourproject.exe   
  •   
  • 注:InstallUtil.exe有两个版,在我机器上的位置是:   
  • C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/InstallUtil.exe     16K 用于.net1.1   
  • C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/InstallUtil.exe    26K 用于.net2.0   
  •   
  •   
  • 卸载服务    
  •   
  • 用项目的输出作为参数,从命令行运行 InstallUtil.exe。    
  •   
  • installutil /u yourproject.exe   
  •   
  • 如果文件换了个文件夹,再运行可能会出错,您可以在CMD里输入:SC delete 服务名,删除这个服务  
C#实现对Windows服务的操作_重启、停止 在我们的日常运维中,可能会遇到业务服务在运行一段时间后由于某些不确定因素而停止运行,导致业务功能受影响,此时只要我们重启服务又能够正常运行了,在我们还没有完全排查从根本上解决问题前,需要一个临时的方法来救场(即:当发现业务服务停止后能够自动重新启动,减少对业务的影响,留下足够的时间来排查问题分析) 阅读详情

相关推荐

基于Visual C#的Windows服务安装与文件监视实战详解

系统日志虽方便,但不适合高频日志或结构化输出。为此可引入文本日志。如前所述,必须标记,以便 InstallUtil 工具识别并执行安装逻辑。

weixin_29215509的博客 1082

c#守护进程(windows服务监测程序,程序关闭后自启动)最详细!!!!!!!!

最近项目需要:程序关闭后自动重新启动,需要一个监测程序所以写下这篇文章,为自己以后留个印象,也给大家一个参考,不喜勿喷!!! 1.打开VS创建windows服务 2.实现服务的操作步骤(查看service1代码) 3.(右键)添加引用(这个dll是为显示界面的,很多人说windows服务开启了,程序也在运行就是不显示界面那就需要这个了) 下载地址: 链接:https://pan...

Struggle_Cxg的博客 1万+

Oracle OCP 19c 认证1Z0-083考试大纲(Oracle官方版)

Oracle Database: Managing Multitenant Architecture Ed 1 course

#真题在线# 1588

C# windows服务启动与暂停

启动对应的是OnStart 停止对应的是OnStop 下面是如何启动一个服务,本次例子服务是写一个服务端的socket通信 protected override void OnStart(string[] args) { serverSocket = new Socket(SocketType.Stream,...

weixin_42415843的博客 1592

人形机器人解耦驱动腿部设计与FAST性能优化

机器人运动控制的核心在于动力学解耦与能量效率优化。通过多连杆机构设计,可以实现关节运动的独立控制,显著降低惯性叠加和能量损耗。DecARt Leg采用创新的齿轮-四杆复合机构,将腿部伸缩与摆动运动完全解耦,配合多杆踝关节传动系统,实测行走速度可达4.18m/s。这种解耦设计不仅提升了动态性能,其提出的FAST指标更为腿部构型提供了量化评估基准,在仓储物流、地形适应等场景展现出显著优势,为人形机器人运动控制提供了新的技术路径。

weixin_33759613的博客 238

从一根USB线缆说起:深入浅出聊聊那些影响信号完整性和EMC性能的‘小细节’(双绞、屏蔽、360度搭接全解析)

本文深入探讨了USB线缆中影响信号完整性和EMC性能的关键细节,包括双绞线绞距、屏蔽层设计和360度搭接工艺。通过实验数据和实用技巧,揭示了这些‘小细节’如何显著影响高频信号质量和电磁兼容性,为工程师提供了从选购到系统设计的全面指南。

weixin_30824479的博客 439

C#实现应用程序自启动的几种方法(winform为例 -以xml配置文件为例)

上次技师分享了通过修改计算机注册表的方式,用json这种配置文件来实现设置开机是否自动启动,这次我们使用xml配置文件来设置是否开机自启动提示:以下是本篇文章正文内容,下面案例可供参考开机自启动在前面一篇文章中说过了,这里主要涉及到对xml文件的读取,写入,修改等操作。这个例子中还有大量的冗余代码,大家用的时候可以提取方法,提取字段,优化一波哦o( ̄▽ ̄)ブ另外,有个设置可以在编译时就把xml配置文件拷贝到debug文件夹中复制到输出目录 -->如果教新则复制。

weixin_46086778的博客 1435

Blender学习笔记——制作向量场

#下载Blender - UE4 - FGA Vector Field Editor插件的压缩包,Github上的下载地址如下:https://github.com/isathar/Blender_UE4_VectorFieldEditor #下载并解压后将FGA VectorFields文件夹复制到C:\Program Files\Blender Foundation\Blender 2.83\2.83\scripts\addons目录下,此步骤可根据blender安装的位置自行调整,只要放入addon

wychao2020的博客 1725

c#开发windows服务

1.首先添加一个windows服务程序 2.在 protected override void OnStart(string[] args)中加入我们的业务逻辑代码 3.在我们的GateService中的设计页面,添加安装程序 4.配置安装程序serviceProcessInstaller1和serviceInstaller1 serviceInstaller1中 StartType设置为Manual,ServiceName设置为我们的服务名 ...

DavidLiu的博客 2326

全能扫描王的实现(python版本)- 目标检测图像矫正

全能扫描王python代码实现,可用于文件扫描或者是图像校正

搬砖猛女的啃书历程 5490

Qt —— 在Win11下“Qt for Android“开发环境,通过USB在真机(华为Meta60 PRO)上调试运行,并打包APK并在真实手机运行

Qt —— 在Win11下“Qt for Android“开发环境,打包APK并在真实手机运行

314

Windows 开启 IIS 服务

本文介绍了在Windows系统中开启IIS服务的具体步骤:首先通过开始菜单进入系统设置,打开控制面板;然后在“程序/程序和功能”中选择“启用或关闭Windows功能”;接着在弹出的窗口中找到并勾选Internet Information Services的所有选项;最后点击确定并重启系统即可完成IIS服务的开启。整个过程配有图文指引,操作简单明了。

黄同学的博客 4011

k8s篇之underlay网络和overlay区别

underlay和overlay

小橙子的笔记屋 2143

iis服务器 关闭自动启动,设置IIS服务器定时自动重启的方法

最近,有一朋友的IIS服务器老是出现问题,运行一段时间下来就会出现访问服务器上的网站时提示数据库连接出错,然后重启IIS后网站又能正常访问了,实在找不出是什么原因导致了这个问题。不过最终我想到了一个笨办法,就是让IIS服务器定时自动重启,在Windows的任务计划中指定一个时间让IIS服务器自动重启。(这只是个笨办法,如果有高手知道究竟是什么原因导致,以及具体的解决方法请留言,谢谢了。)设置IIS...

weixin_34717961的博客 3027

把 SAP Event Mesh 讲透:从事件驱动架构到 SAP BTP 落地实践

摘要: SAP Event Mesh是SAP BTP上的云端消息与事件服务,支持企业构建解耦、弹性的应用架构。它通过异步通信模式(如发布/订阅)解决传统同步集成的痛点,如系统紧耦合、链路脆弱等问题。核心能力包括事件驱动通信、可靠消息投递(支持至少一次送达)、与SAP生态深度集成(如S/4HANA事件扩展)以及混合环境支持。典型场景包括订单处理、库存同步等,发布方只需发出业务事件,订阅方按需消费,避免系统间直接依赖,符合Clean Core理念。两种关键模式为广播式的Publish/Subscribe和定向的

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 116

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

用C#创建Windows服务(Windows Services)[新]

 一.Windows服务介绍:   Windows服务以前被称作NT服务,是一些运行在Windows NT、Windows 2000和Windows XP等操作系统下用户环境以外的程序。在以前,编写Windows服务程序需要程序员很强的C或C++功底。然而现在在Visual Studio.Net下,你可以运用C++或Visual C#或Visual Basic.Net很轻松的创建一个Windo

善钧@程序员 939

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C# 重启服务

System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController("FaceService"); if (service.Status == ServiceControllerStatus.Running) { service.Stop(); s...

Office文件在线预览解析 1519

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C#创建和部署Windows Service程序

  接下来这里我对Windows Service程序的创建、部署等方面做简单描述。 前言   这里首先有个问题,什么是Windows Service,也就是我们Windows服务。微软的官方定义是这样的:Microsoft Windows 服务(即以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。Windows服务能够随着我们主机开机而自动启动,不显示任何用户界面,可以对服务进行启动、停止、暂停、重启等,是一个后台进程。   通过下面的方法可以查看到我们计算机

耕耘虫 1923

c# 操作window服务

查找服务 //查找所有服务 List<ServiceController> lstAll = ServiceController.GetServices().ToList(); //根据服务的显示名称查找服务 List<ServiceController> lstDisplayName = ServiceController.GetServices().Where(p => p.DisplayName.Contains($"SQL Server (")).ToList();

Hakim2214的博客 661

Windows服务彻底删除指南:从SC命令到编程实现

Windows服务是操作系统后台运行的核心组件,由服务控制管理器(SCM)统一管理。其注册信息存储在系统注册表深处,生命周期管理比普通应用复杂。理解服务删除的本质,关键在于掌握注册表项清理、权限控制与依赖处理等底层原理。这项技能对于系统运维、软件开发和环境清理具有重要价值,能有效解决软件卸载残留、测试服务清理等实际问题。本文聚焦于Windows服务删除,详细解析了使用SC命令、PowerShell以及C#编程等多种方法,并针对服务残留、文件锁定等常见场景提供了解决方案。

weixin_30797199的博客 342
上一篇: C#如何编写最小化时隐藏为任务栏图标
下一篇: 详细讲解在c#语言中DateTime类常用技巧
angleoldhen
博客等级 码龄20年 40粉丝 46原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值