• C#创建windows服务并发布


    创建window 服务

    新建一个window 服务项目MyService,如下图

    切换到代码视图修改.

    [csharp] view plaincopy
     
     
    1. using System;  
    2. using System.Collections.Generic;  
    3. using System.ComponentModel;  
    4. using System.Data;  
    5. using System.Diagnostics;  
    6. using System.IO;  
    7. using System.Linq;  
    8. using System.ServiceProcess;  
    9. using System.Text;  
    10. using System.Threading.Tasks;  
    11.   
    12. namespace MyService  
    13. {  
    14.     public partial class Service1 : ServiceBase  
    15.     {  
    16.         //定时器  
    17.         System.Timers.Timer t = null;  
    18.   
    19.   
    20.         public Service1()  
    21.         {  
    22.             InitializeComponent();  
    23.   
    24.             //启用暂停恢复  
    25.             base.CanPauseAndContinue = true;  
    26.   
    27.             //每5秒执行一次  
    28.             t = new System.Timers.Timer(5000);  
    29.             //设置是执行一次(false)还是一直执行(true);  
    30.             t.AutoReset = true;  
    31.             //是否执行System.Timers.Timer.Elapsed事件;  
    32.             t.Enabled = true;  
    33.             //到达时间的时候执行事件(theout方法);  
    34.             t.Elapsed += new System.Timers.ElapsedEventHandler(theout);  
    35.               
    36.         }  
    37.   
    38.         //启动服务执行  
    39.         protected override void OnStart(string[] args)  
    40.         {  
    41.             string state = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "启动";  
    42.             WriteLog(state);  
    43.   
    44.         }  
    45.   
    46.         //停止服务执行  
    47.         protected override void OnStop()  
    48.         {  
    49.             string state = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "停止";  
    50.             WriteLog(state);  
    51.         }  
    52.   
    53.         //恢复服务执行  
    54.         protected override void OnContinue()  
    55.         {  
    56.             string state = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "继续";  
    57.             WriteLog(state);  
    58.             t.Start();  
    59.         }  
    60.   
    61.         //暂停服务执行  
    62.         protected override void OnPause()  
    63.         {  
    64.             string state = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "暂停";  
    65.             WriteLog(state);  
    66.   
    67.             t.Stop();  
    68.         }  
    69.   
    70.   
    71.         public void WriteLog(string str)  
    72.         {  
    73.             using (StreamWriter sw = File.AppendText(@"d:service.txt"))  
    74.             {  
    75.                 sw.WriteLine(str);  
    76.                 sw.Flush();  
    77.             }  
    78.         }  
    79.   
    80.         public void theout(object source, System.Timers.ElapsedEventArgs e)  
    81.         {  
    82.   
    83.             WriteLog("theout:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));  
    84.         }  
    85.     }  
    86. }  


     

    解释:OnStart和OnStop分别是服务器启动和停止后,所发生的事件操作方法.定义了一个定时器,每隔5秒执行一次(theout方法),因为暂停恢复功能默认是不启用的,需要设置CanPauseAndContinue属性启用此功能,同时重写OnStop和OnContinue方法,添加自己的逻辑代码.

    将服务程序service1.cs 切换到视图模式,用鼠标右键单击设计视图选择“添加安装程序”选项,此后在项目中自动增加了一个ProjectInstaller.cs,

    如下图

    打开ProjectInstaller,修改serviceInstaller1组件属性

    Description= 我的服务备注                       服务备注说明

    DisplayName=我的服务                            服务友好名字 

    ServiceName=MyService                         安装服务器名字

    StartType=Automatic                                服务类型

    ü         Manual      服务安装后,必须手动启动。

    ü         Automatic    每次计算机重新启动时,服务都会自动启动。

    ü         Disabled     服务无法启动。

    并设计serviceProcessInstaller1的属性Account=LocalSystem

    运行编译,一个简单的windows服务已经开发完成.

    安装window服务

    安装命令:InstallUtil.exe MyServiceLog.exe

    InstallUtil存在路径为:C:WINDOWSMicrosoft.NETFramework.NET版本号

    复制C:WINDOWSMicrosoft.NETFramework版本号  路径中的InstallUtil.exe 到bin/debug或bin/release文件夹中,在命令行窗口中直接运行命令

    InstallUtil.exe MyServiceLog.exe,在系统中注册这个服务,使它建立一个合适的注册项,如下图:

    然后再window服务列表中,启动MyServiceLog服务

    卸载window 服务

    命令:InstallUtil.exe MyServiceLog.exe /u

    如果修改这个服务,但是路径没有变化的话是不需要重新注册服务的,直接停止服务,然后用新的文件覆盖原来的文件即可,如果路径发生变化,应该先卸载这个服务,然后重新安装这个服务。

  • 相关阅读:
    使用 CountDownLatch 控制多个线程执行顺序
    define 与 inline
    虚函数 纯虚函数 抽象方法 接口
    [转]Android 超高仿微信图片选择器 图片该这么加载
    Android ImageView src与backgroud
    Android View绘制原理分析
    Android 5.0 Default SMS App以及运营商授权SMS App
    Android 5.0 双卡信息管理分析
    Android 5.1 AOSP 源码获取
    Android 5.0 Uicc框架分析
  • 原文地址:https://www.cnblogs.com/taleche/p/9662433.html
Copyright © 2020-2023  润新知