• 接Window服务(二)


    接Window服务(一)

    复制代码
     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 + @"	" + sc[i].DisplayName + @"	" + 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 + "	" + scArr[i].DisplayName + "	" + 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);
  • 相关阅读:
    Memory Limit Exceeded
    浙江省程序设计竞赛2019
    hdu3974 Assign the task
    TCP面向字节流和UDP面向报文的区别
    django-admin和django-admin.py的区别
    利用 pip 安装 Python 程序包到个人用户文件夹下
    PyCharm中目录directory与包package的区别及相关import详解
    分布式表示(Distributed Representation)
    Nginx
    32.最长有效括号
  • 原文地址:https://www.cnblogs.com/ChineseMoonGod/p/5545657.html
Copyright © 2020-2023  润新知