C#簡單windows服務

    由於作後臺比較多,因此常常須要寫一些後臺服務。通常的流程是先建立一個服務項目,加入代碼。而後打包一個安裝程序或者直接用dos命令安裝服務。下面是詳細內容:
    1. 建立windows服務項目
        VisualStudio的項目模版裏面有一個對應的是windows服務,以下圖:
        windows

       選擇上面的模版新建項目後,服務的主程序代碼在Service1.cs裏面,右擊這個文件選擇查看代碼。下面的代碼是一個簡單的例子,真正的項目裏面通常會調用咱們本身寫的一些庫來實現比較複雜的邏輯,不過大部分狀況下都是開個線程跑一個循環。
       ide

    public partial class Service1 : ServiceBase
    {
        private Thread t;
        public Service1()
        {
            InitializeComponent();
            t = new Thread(Run);
        }

        protected override void OnStart(string[] args)
        {
            t.Start(); 
        }

        protected override void OnStop()
        {
            t.Abort();
        }

        private void Run()
        {
            while (true)
            {                
                File.AppendAllText(AppDomain.CurrentDomain.BaseDirectory + "\\xx.txt", DateTime.Now.ToString() + Environment.NewLine);
                Thread.Sleep(1000);
            }
        }
    }

      代碼編寫完後構建項目,會生成相關的程序集,主要是WindowsService1.exe。測試

    2. 安裝服務spa

      我通常用命令行來安裝服務,因此流程比較簡單。咱們能夠把編譯好的程序放到一個指定的目錄,好比"D:\my\service1"。
      下面是安裝命令:sc create hello binPath= "D:\my\service1\WindowsService1.exe" DisplayName= "hello"命令行

       其中,create後面的hello是服務名,另外兩個參數分別是程序路徑和顯示名稱。注意選項=符號和值之間有個空格。
       安裝時還能夠指定依賴等其餘選項,具體能夠sc create \?來查看。線程

      安裝完後打開services.msc會看到新安裝的服務,右擊啓動即可以運行服務了。code

下面是一些經常使用的維護:blog

   1. 更新服務程序
       先中止服務,而後等待一會,而後將新構建的程序集複製到安裝目錄覆蓋老的程序集。
       而後再從新啓動服務。ip

   2. 刪除服務string

       sc delete hello
       其中hello是服務名稱。

   3. 修改服務描述。
       sc description [服務名稱] [描述]
       sc description hello 測試

相關文章
相關標籤/搜索