window 服务(二)

接Window服务(一)windows

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类ide

ServiceInstaller的属性工具

属性   描述
DisplayName 显示名称
ServiceName 表示服务名称,这个名称必须与Installer将要安装的windows服务名称相同
ServiceDependOn 服务所要用到的其服务名称的一个数组
StartType 表示所安装服务的启动特性,能够为Automatic,Manual或Disable,默认为Manual

 

 

 

 

 

 

ServiceInstaller事件this

方法 事件
AfterInstaller() 调用Install方法后发生
AfterRollback() 调用Rollback后发生
AfterUninstall() 调用Uninstall方法后发生
BeforeInstall() 调用Install方法前发生
BeforeRollback() 调用Rollback方法前发生
BeforeUninstall() 调用Uninstall方法前发生
Committed() 调用Commit方法后发生
Committing() 调用Commit方法前发生

 

 

 

 

 

 

 

 

 

ServiceProcessInstaller类spa

用于安装ServiceBase继承的windows服务,它与一个可执行程序中的全部服务所作基本工做相同调试

属性日志

属性 描述
Account 运行服务的当前用户帐号  
HelpText   在服务安装选项中给出的帮助信息
Password   运行服务的当前帐号密码
UserName   运行服务的当前帐号用户名

 

 

 

 

吊死windows服务code

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);
相关文章
相关标签/搜索