• 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);
  • 相关阅读:
    判断文件是否正在使用
    批量复制文件
    PAT 甲级 1116 Come on! Let's C (20 分)
    PAT 甲级 1116 Come on! Let's C (20 分)
    1123 Is It a Complete AVL Tree (30 分)
    1123 Is It a Complete AVL Tree (30 分)
    C++ sort()和is_sorted()的升序降序和自定义排序
    C++ sort()和is_sorted()的升序降序和自定义排序
    PAT 甲级 1103 Integer Factorization (30 分)
    PAT 甲级 1103 Integer Factorization (30 分)
  • 原文地址:https://www.cnblogs.com/hfliyi/p/2635396.html
Copyright © 2020-2023  润新知