起因: 同事写的C# windows 服务太不靠谱了.   老是挂. 给我造成巨大的麻烦 (我是技术支持,擦屁股的)

所以想自己学习写windows 服务并检测他的服务的运行状态,一旦挂掉,能在很短的时间内给他启动起来.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading;
using System.IO;
namespace TestService
{public partial class Service1 : ServiceBase{string nowtime = System.DateTime.Now.ToString("yyy-MM-dd HH:mm:ss");  //输出当前时间public Service1(){InitializeComponent();}protected override void OnStart(string[] args){Debug.WriteLine("正在开始检测服务" + " " + nowtime);System.Timers.Timer t = new System.Timers.Timer();    //定义一个定时器t.Interval = 20000;   //时间间隔为5st.Elapsed += new System.Timers.ElapsedEventHandler(Checkstatus);  //到点执行事件t.AutoReset = true;   //重复执行t.Enabled = true;// 是否执行elapsed 事件}public  void Checkstatus(object source,System.Timers.ElapsedEventArgs e){int intSecond = e.SignalTime.Second;try{ServiceController sc = new ServiceController("TeamViewer9");Debug.WriteLine("正在检测" +sc.ServiceName+" " + nowtime);string serviceStutus=sc.Status.ToString();if (string.Equals(serviceStutus, "Running")){Debug.WriteLine(sc.ServiceName + " " + "服务正在运行" + " "+nowtime);}else{Debug.WriteLine(sc.ServiceName + " " + "服务不在运行" + " " + nowtime);writestr(nowtime+sc.ServiceName+" "+"服务停止");Debug.WriteLine("准备启动服务" + " " + sc.ServiceName + " " + nowtime);sc.Refresh();sc.Start();sc.WaitForStatus(ServiceControllerStatus.Running);}Thread.Sleep(10000);}catch (System.Exception err){writestr(err.Message); }}protected override void OnStop(){Debug.WriteLine("正在结束服务" + "  "+ nowtime);   }public void writestr(string readme){StreamWriter dout = new StreamWriter(@"D:\" + "WindowsServiceTestLog.txt", true);dout.Write("\r\n事件:" + readme + "\r\n操作时间:" + System.DateTime.Now.ToString("yyy-MM-dd HH:mm:ss"));dout.Close();  }}
}

因为是初学,所以里面放了很多debug信息 ,看是否写对了.

拿的是teamview 远程工具的服务来做的测试,效果不错.

另外在生产环境中20S的检测周期是不是太快了,先测试了再说吧.

再说下服务的安装.

1.在解决方案上右键 选择"界面设计器"

2.在界面设计上右键 选择 添加安装程序

3.出现这2个.

4.分别在上面点击右键.选择属性.

Account ---->localsystem  不知道咋解释,如果系统用户1 执行了这个服务,系统用户2 上面同样也有!! 不需要重新安装.

看看就明白了.  starttype  就是启动类型,  这个自己随便打开一个系统服务 对照看就是了, 不细说,

5.安装服务.

从系统.net目录下拷贝InstallUtil.exe 这个工具到工程的debug 目录下

在目录下新建1个bat文件 内容为

InstallUtil.exe TestService.exe

即安装生成的服务文件

InstallUtil.exe -u TestService.exe 是删除这个服务.

6. 调试方法

服务安装成功之后,修改代码之后 ,生成解决方案, 先停止测试服务,再开启就OK了.

7. 打印截图

请无视中间 的乱七八糟的打印, 不知道是哪里的....

C# windows 服务学习探索相关推荐

  1. Mcad学习笔记之Microsoft Windows服务

    相关文章导航 Sql Server2005 Transact-SQL 新兵器学习总结之-总结 Flex,Fms3相关文章索引 FlexAir开源版-全球免费多人视频聊天室,免费网络远程多人视频会议系统 ...

  2. Quartz.NET 2.0 学习笔记(5) :实例创建Windows服务实现任务调度 Quartz.NET 项目地址 http://quartznet.sourceforge.net/ Quar

    Quartz.NET 2.0 学习笔记(5) :实例创建Windows服务实现任务调度 Quartz.NET 项目地址 http://quartznet.sourceforge.net/ Quartz ...

  3. .NET Core 微服务学习与实践系列文章目录索引(2019版)

    Photo :.NET Core 文 | Edison Zhou 2018年,我开始学习和实践.NET Core,并开始了微服务的学习,以及通过各种开源组件搭建服务治理技术方案,并在学习过程中总结了一 ...

  4. 「云服务」阿里云服务学习路径图总结

    阿里云服务学习路径图总结 开始探索阿里云的产品和服务,可以发现无限的可能性. 云服务器 ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 ...

  5. 用.NET创建Windows服务

    用.NET创建Windows服务 译者说明:我是通过翻译来学习C#的,文中涉及到的有Visual Studio.NET有关操作,我都根据中文版的VS.NET显示信息来处理的,可以让大家不致有误解. 作 ...

  6. 更上层楼:动态安装你的windows服务

    前言:先说明一下本文示例windows服务的简单需求,即根据外部配置实现不同方式记录日志的功能.记录日志的方式有三种,分为文本记录.数据库记录以及文本和数据库同时记录日志.如您所知,这个功能基本上没有 ...

  7. 解决vista和win7在windows服务中交互桌面权限问题:穿透Session 0 隔离

    服务(Service)对于大家来说一定不会陌生,它是Windows 操作系统重要的组成部分.我们可以把服务想像成一种特殊的应用程序,它随系统的"开启-关闭"而"开始-停止 ...

  8. 利用vs.net快速开发windows服务(总结)

    引用 http://www.cnblogs.com/lovecherry/archive/2005/03/25/125527.html 在很多应用中需要做windows服务来操作数据库等操作,比如 ( ...

  9. Windows PatchGuard学习

    打开 Win64AST工具,看一下 Rootkit Functions 里面,有些什么功能:rootkit,肯定是些很底层的功能,和安全相关: 看下有一项 禁止PatchGuard: PatchGua ...

最新文章

  1. JavaScript之作用域链
  2. python语言模型工具_Python工具整合,为程序员和新手准备的 8 大 Python 工具
  3. 浅谈python_浅谈Python(二)
  4. 如何在运行时打印出 SAP Spartacus 配置(config)信息
  5. 解决:springcloud 启动 config-client 报错:... .integration.config.HandlerMethodArgumentResolversHolder
  6. Windows核心编程——内存映射
  7. NHibernate 做个小项目来试一下吧 二
  8. 蓝字冲销是什么意思_会计做帐中用红字和蓝字代表的意思是什么
  9. C# 读取Oracle数据库数据
  10. python未知长度数组,python – 从具有未知维数的numpy数组中提取超立方体块
  11. pandas---文件导入和导出细节详解
  12. 在计算机领域,美国信息交换标准代码的缩写符号是.,计算机基础在线作业.docx...
  13. 2022-2028年中国财税信息化行业市场行情动态及发展趋向分析报告
  14. Android开发如何调用百度翻译api
  15. 快递是否签收,分享小技巧查询物流查看已签收件
  16. APP安全测试点分析
  17. 群控时,如何进行电脑主机配置?
  18. Python文件及文件夹处理
  19. php 微信平台,【php】微信公众平台
  20. 什么是数据科学家_为什么数据科学家应该使用功能?

热门文章

  1. 温州商人做生意和你不一样的手段
  2. 奇点大学最年轻教职工、三家科技公司创始人,他如何用AI探索放射学里的人与机器...
  3. 应用程序开发总结(7)--用折叠数据库字段的方法保存配置
  4. 功能测试必备:抓包工具之谷歌开发者工具介绍及使用场景
  5. 中职网络安全-Web渗透
  6. 【CTF】加密7——这不是md5+贝斯家族+富强民主
  7. 实训笔记202105110124郭静
  8. 农场买了一只羊,第一年是小羊,第二年底生一只,第三年不生,第四年底再生一只,第五年死掉
  9. dbfmpi——树莓派豆瓣电台fm发射器
  10. Mstar方案CEC启动流程