接Window服务(二)

接Window服务(一)

ServiceController方法调用
复制代码
 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);

 

转载于:https://www.cnblogs.com/ChineseMoonGod/p/5545657.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值