window 服务(二)
接Window服务(一)
ServiceController方法调用
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
this.AutoLog = true;
}
protected override void OnStart(string[] args)
{
// TODO: 在此处添加代码以启动服务。
string state = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "启动";
WriteLog(state);
ServiceController[] sc = ServiceController.GetDevices();
string str = "";
for (int i = 0; i < sc.Length; i++)
{
WriteLog(sc[i].ServiceName + @"\t" + sc[i].DisplayName + @"\t" + sc[i].Status);
}
WriteLog(" ");
ServiceController[] scArr = ServiceController.GetServices();
for (int i = 0; i < scArr.Length; i++)
{
WriteLog(scArr[i].ServiceName + "\t" + scArr[i].DisplayName + "\t" + scArr[i].Status);
}
ServiceController s = new ServiceController();
s.ServiceName = "Sina";
}
protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
string state = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "停止";
WriteLog(state);
}
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
WriteLog(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));
}
public void WriteLog(string str)
{
using (StreamWriter sw = File.AppendText(@"c:\service.txt"))
{
sw.WriteLine(str);
sw.Flush();
}
}
}

1 public partial class Service1 : ServiceBase
2 {
3 public Service1()
4 {
5 InitializeComponent();
6 this.AutoLog = true;
7 }
8 protected override void OnStart(string[] args)
9 {
10 // TODO: 在此处添加代码以启动服务。
11 string state = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "启动";
12 WriteLog(state);
13 ServiceController[] sc = ServiceController.GetDevices();
14 string str = "";
15 for (int i = 0; i < sc.Length; i++)
16 {
17 WriteLog(sc[i].ServiceName + @"\t" + sc[i].DisplayName + @"\t" + sc[i].Status);
18 }
19 WriteLog(" ");
20 ServiceController[] scArr = ServiceController.GetServices();
21 for (int i = 0; i < scArr.Length; i++)
22 {
23 WriteLog(scArr[i].ServiceName + "\t" + scArr[i].DisplayName + "\t" + scArr[i].Status);
24 }
25 ServiceController s = new ServiceController();
26 s.ServiceName = "Sina";
27 s.Stop();
28 }
29 protected override void OnStop()
30 {
31 // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
32 string state = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "停止";
33 WriteLog(state);
34 }
35 private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
36 {
37 WriteLog(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));
38 }
39 public void WriteLog(string str)
40 {
41 using (StreamWriter sw = File.AppendText(@"c:\service.txt"))
42 {
43 sw.WriteLine(str);
44 sw.Flush();
45 }
46 }
47 }

ServiceController属性
| 属性 | 描述 |
| CanPauseAndContinue | 表示服务是否可以停止 |
| CanShutDown | 表示服务在系统关闭时是否可以得到通知,CanStop表示服务器是否可以被停止 |
| DependentServices | 表示与服务相关联的设备 |
| DisplayName | 表示服务控制器所绑定的名称 |
| MachineName | 表示服务所在的计算机名称 |
| ServiceName | 表示绑定的服务名称 |
| ServiceType | 表示控制器所引用的服务类型 |
| ServicesDependedOn | 表示服务所依赖ude服务集合Status表示控制器所引用的服务状态 |
ServiceInstaller类
ServiceInstaller的属性
| 属性 | 描述 |
| DisplayName | 显示名称 |
| ServiceName | 表示服务名称,这个名称必须与Installer将要安装的windows服务名称相同 |
| ServiceDependOn | 服务所要用到的其服务名称的一个数组 |
| StartType | 表示所安装服务的启动特性,可以为Automatic,Manual或Disable,默认为Manual |
ServiceInstaller事件
| 方法 | 事件 |
| AfterInstaller() | 调用Install方法后发生 |
| AfterRollback() | 调用Rollback后发生 |
| AfterUninstall() | 调用Uninstall方法后发生 |
| BeforeInstall() | 调用Install方法前发生 |
| BeforeRollback() | 调用Rollback方法前发生 |
| BeforeUninstall() | 调用Uninstall方法前发生 |
| Committed() | 调用Commit方法后发生 |
| Committing() | 调用Commit方法前发生 |
ServiceProcessInstaller类
用于安装ServiceBase继承的windows服务,它与一个可执行程序中的所有服务所做基本工作相同
属性
| 属性 | 描述 |
| Account | 运行服务的当前用户账号 |
| HelpText | 在服务安装选项中给出的帮助信息 |
| Password | 运行服务的当前账号密码 |
| UserName | 运行服务的当前账号用户名 |
吊死windows服务
1,日志调试法
2,附加进程断电调试法
步骤:
vs打开MySerivceLog项目
在管理工具-〉服务里面启动MyServiceLog服务
单击vs的调试 -〉附加到进程,如下图

在"可用进程“列表中,选中你要调式的服务的可执行文件名
单击 ”附加“按钮,即可进入调试状态
在timer1_Elapsed方法里设置一个断点,然后等它执行,服务执行到该处时候会自动启动断点。

另外,定时服务可能会定时的访问本域或者非本域的页面,
解决办法用WebClient
1 WebClient client = new WebClient();
2 string uri = "http://127.0.0.1/rss/sina.aspx";
3 byte[] by = client.DownloadData(uri);
window 服务(二)的更多相关文章
- 接Window服务(二)
接Window服务(一) ServiceController方法调用 1 public partial class Service1 : ServiceBase 2 { 3 public Servic ...
- Window服务基于Quartz.Net组件实现定时任务调度(二)
前言: 在上一章中,我们通过利用控制台实现定时任务调度,已经大致了解了如何基于Quartz.Net组件实现任务,至少包括三部分:job(作业),trigger(触发器),scheduler(调度器). ...
- WPF Window 服务安装
一.安装服务 1.已管理员的身份启动CMD 2.输入 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 回车 3.输入 InstallUtil.exe ...
- C# 编写Window服务基础(一)
一.Windows服务介绍: Windows服务以前被称作NT服务,是一些运行在Windows NT.Windows 2000和Windows XP等操作系统下用户环境以外的程序.在以前,编写Wind ...
- C#在window服务配置Log4Net.dll
1.使用背景: C#window服务下添加一个日志记录程序集(Log4Net.dll) 2.添加和使用步骤如下: 一.下载并引入Log4Net.dll程序集到项目中 下载地址:http://loggi ...
- C#写的window服务内存溢出
浅谈c#垃圾回收机制(GC) 写了一个window服务,循环更新sqlite记录,内存一点点稳步增长.三天后,内存溢出.于是,我从自己的代码入手,查找到底哪儿占用内存释放不掉,最终明确是调用servi ...
- c# window服务-初学习
window服务-初学习 一.工具: VS2015+NET Framework4.5. 二.操作: 1.新建windows服务的项目: 2.修改windows服务相关内容: 3.预览windows服务 ...
- Redis 下载与配置window服务
1.Redis下载 Git下载地址:https://github.com/MicrosoftArchive/redis/releases 2.配置Window服务 步骤一:在 Redis目录 输入 c ...
- C#编写window服务,一步一步(1)
Window服务是啥,这里就不废话了,如何用在哪里用也不废话了,这里我这篇文章只是详述了我在vs2012中创建window服务的经过,希望对你有所帮助. 另外:我在编写服务过程中参考了 Profess ...
随机推荐
- PE文件RV转FOA及FOA转RVA
/************************************************************************/ /* 功能:虚拟内存相对地址和文件偏移的转换 参数 ...
- (1)oracle安装、卸载、启动、关闭、登陆以及同时遇到的问题
数据库概念 在oracle里数据库是一个静态的概念,数据库的资料保存在硬盘上,一个数据库可以有多个实例 数据库实例 数据库实例是一个动态的概念,它是进程+这个进程的内存块.就把它当成个指针吧,这个指针 ...
- quailty's Contest #1 道路修建 EXT(启发式合并)
题目链接 道路修建 EXT 考虑并查集的启发式合并,合并的时候小的子树的根成为大的子树的根的儿子. 可以证明这样整棵树的深度不会超过$logn$. 两个根合并的时候,产生的新的边的边权为当前的时间. ...
- request与response对象.
request与response对象. 1. request代表请求对象 response代表的响应对象. 学习它们我们可以操作http请求与响应. 2.request,response体系结构. 在 ...
- Python的网络编程[5] -> BOOTP + TFTP + FTP -> 实现一个简单的文件传输流程
BOOTP-TFTP-FTP 目录 文件传输流程 服务器建立过程 客户端建立过程 1 文件传输流程 / File Transfer Flow 利用BOOTP,TFTP,FTP三种传输协议,建立起客户端 ...
- Python实现微信小程序支付功能
由于最近自己在做小程序的支付,就在这里简单介绍一下讲一下用python做小程序支付这个流程.当然在进行开发之前还是建议读一下具体的流程,清楚支付的过程. 1.支付交互流程 当然具体的参数配置可以参考官 ...
- Union与UnionAll
UNION指令的目的是将两个SQL语句的结果合并起来.从这个角度来看, 我们会产生这样的感觉,UNION跟JOIN似乎有些许类似,因为这两个指令都可以由多个表格中撷取资料. UNION的一个限制是两个 ...
- unity3d 场景配置文件生成代码
using UnityEngine; using UnityEditor; using System.IO; using System; using System.Text; using System ...
- 四. Java继承和多态9. 类与类之间的关系
类与类之间最常见的关系主要有三种:依赖(uses-a).聚合(has-a)和继承(is-a). 下面以在线书店订单系统为例,来详细的讲述这三种关系的概念. 在线书店订单系统的主要功能是:注册用户可以登 ...
- lrc 校验码 ascii 格式
lrc 校验码 ascii 格式 将adr1 (站号)至最后一个数据内容相加,得到结果以256为单位,超出部分去除(如得到的结果为16#128H则只取28H,) 然后计算二次反补得到后的结果即为侦误 ...