接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 服务(二)的更多相关文章

  1. 接Window服务(二)

    接Window服务(一) ServiceController方法调用 1 public partial class Service1 : ServiceBase 2 { 3 public Servic ...

  2. Window服务基于Quartz.Net组件实现定时任务调度(二)

    前言: 在上一章中,我们通过利用控制台实现定时任务调度,已经大致了解了如何基于Quartz.Net组件实现任务,至少包括三部分:job(作业),trigger(触发器),scheduler(调度器). ...

  3. WPF Window 服务安装

    一.安装服务 1.已管理员的身份启动CMD 2.输入 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 回车 3.输入 InstallUtil.exe ...

  4. C# 编写Window服务基础(一)

    一.Windows服务介绍: Windows服务以前被称作NT服务,是一些运行在Windows NT.Windows 2000和Windows XP等操作系统下用户环境以外的程序.在以前,编写Wind ...

  5. C#在window服务配置Log4Net.dll

    1.使用背景: C#window服务下添加一个日志记录程序集(Log4Net.dll) 2.添加和使用步骤如下: 一.下载并引入Log4Net.dll程序集到项目中 下载地址:http://loggi ...

  6. C#写的window服务内存溢出

    浅谈c#垃圾回收机制(GC) 写了一个window服务,循环更新sqlite记录,内存一点点稳步增长.三天后,内存溢出.于是,我从自己的代码入手,查找到底哪儿占用内存释放不掉,最终明确是调用servi ...

  7. c# window服务-初学习

    window服务-初学习 一.工具: VS2015+NET Framework4.5. 二.操作: 1.新建windows服务的项目: 2.修改windows服务相关内容: 3.预览windows服务 ...

  8. Redis 下载与配置window服务

    1.Redis下载 Git下载地址:https://github.com/MicrosoftArchive/redis/releases 2.配置Window服务 步骤一:在 Redis目录 输入 c ...

  9. C#编写window服务,一步一步(1)

    Window服务是啥,这里就不废话了,如何用在哪里用也不废话了,这里我这篇文章只是详述了我在vs2012中创建window服务的经过,希望对你有所帮助. 另外:我在编写服务过程中参考了 Profess ...

随机推荐

  1. Apache开启PHP的伪静态模式

    首先,什么是伪静态: 伪静态又名URL重写,是动态的网址看起来像静态的网址.换句话说就是,动态网页通过重写 URL 方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面. 1. ...

  2. Appium+python自动化21-DesiredCapabilities详解【转载】

    Appium Desired Capabilities Desired Capabilities 是由 keys 和 values 组成的 JSON 对象. 举个简单例子: { "platf ...

  3. python cProfile分析程序性能

    转自:http://xianglong.me/article/analysis-python-application-performance-using-cProfile/?utm_source=tu ...

  4. [android]加载大量图片避免OOM

    原理是事先取得图片的长宽,直接读出缩略图. BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferr ...

  5. Mysql Grant权限

    查看用户权限: SELECT host,user,password,Grant_priv,Super_priv FROM mysql.user; 权限取决于最上一条记录的值 如果需要收回权限: REV ...

  6. Request.Url.Port 获取不到正确的端口号

    今天遇到一个很奇怪的事情,用request.url.port来获取一个请求的端口,返回是80 ,很纳闷啊我的请求上面是http://www.XX.com:8088 啊,怎么会是80啊,太不可思议了! ...

  7. delphi crc校验函数

    function CalCRC16(AData: array of Byte; AStart, AEnd: Integer): string;const  GENP=$8408;  //多项式公式X1 ...

  8. maven自己主动编译,解决你每次代码改动须要又一次编译的繁琐

    maven结构的项目,我们在每次改动代码后都会须要手动编译,以下命令能够解决此问题.仅仅要代码改动.会自己主动帮你编译. 进入项目文件夹运行:mvn -U eclipse:clean eclipse: ...

  9. Java算法题:求素数

    题目:判断101-200之间有多少个素数,并输出所有素数. 思路:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数. 具体代码: public Ve ...

  10. python开发微信支付学习记录(转)

    前言 微信支付是由微信及财付通联合推出的移动支付创新产品.如今,随着微信支付的全面开放,相关需求也越来越多,很多开发人员进行微信支付开发及商家申请微信支付时,面临着诸多疑惑. 要想开发顺利进行,首先要 ...