C# windows 服务学习探索
起因: 同事写的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 服务学习探索相关推荐
- Mcad学习笔记之Microsoft Windows服务
相关文章导航 Sql Server2005 Transact-SQL 新兵器学习总结之-总结 Flex,Fms3相关文章索引 FlexAir开源版-全球免费多人视频聊天室,免费网络远程多人视频会议系统 ...
- 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 ...
- .NET Core 微服务学习与实践系列文章目录索引(2019版)
Photo :.NET Core 文 | Edison Zhou 2018年,我开始学习和实践.NET Core,并开始了微服务的学习,以及通过各种开源组件搭建服务治理技术方案,并在学习过程中总结了一 ...
- 「云服务」阿里云服务学习路径图总结
阿里云服务学习路径图总结 开始探索阿里云的产品和服务,可以发现无限的可能性. 云服务器 ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 ...
- 用.NET创建Windows服务
用.NET创建Windows服务 译者说明:我是通过翻译来学习C#的,文中涉及到的有Visual Studio.NET有关操作,我都根据中文版的VS.NET显示信息来处理的,可以让大家不致有误解. 作 ...
- 更上层楼:动态安装你的windows服务
前言:先说明一下本文示例windows服务的简单需求,即根据外部配置实现不同方式记录日志的功能.记录日志的方式有三种,分为文本记录.数据库记录以及文本和数据库同时记录日志.如您所知,这个功能基本上没有 ...
- 解决vista和win7在windows服务中交互桌面权限问题:穿透Session 0 隔离
服务(Service)对于大家来说一定不会陌生,它是Windows 操作系统重要的组成部分.我们可以把服务想像成一种特殊的应用程序,它随系统的"开启-关闭"而"开始-停止 ...
- 利用vs.net快速开发windows服务(总结)
引用 http://www.cnblogs.com/lovecherry/archive/2005/03/25/125527.html 在很多应用中需要做windows服务来操作数据库等操作,比如 ( ...
- Windows PatchGuard学习
打开 Win64AST工具,看一下 Rootkit Functions 里面,有些什么功能:rootkit,肯定是些很底层的功能,和安全相关: 看下有一项 禁止PatchGuard: PatchGua ...
最新文章
- JavaScript之作用域链
- python语言模型工具_Python工具整合,为程序员和新手准备的 8 大 Python 工具
- 浅谈python_浅谈Python(二)
- 如何在运行时打印出 SAP Spartacus 配置(config)信息
- 解决:springcloud 启动 config-client 报错:... .integration.config.HandlerMethodArgumentResolversHolder
- Windows核心编程——内存映射
- NHibernate 做个小项目来试一下吧 二
- 蓝字冲销是什么意思_会计做帐中用红字和蓝字代表的意思是什么
- C# 读取Oracle数据库数据
- python未知长度数组,python – 从具有未知维数的numpy数组中提取超立方体块
- pandas---文件导入和导出细节详解
- 在计算机领域,美国信息交换标准代码的缩写符号是.,计算机基础在线作业.docx...
- 2022-2028年中国财税信息化行业市场行情动态及发展趋向分析报告
- Android开发如何调用百度翻译api
- 快递是否签收,分享小技巧查询物流查看已签收件
- APP安全测试点分析
- 群控时,如何进行电脑主机配置?
- Python文件及文件夹处理
- php 微信平台,【php】微信公众平台
- 什么是数据科学家_为什么数据科学家应该使用功能?