程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> C#開發Windows服務

C#開發Windows服務

編輯:C#基礎知識

Microsoft Windows 服務(即,以前的 NT 服務)使您能夠創建在它們自己的 Windows 會話中可長時間運行的可執行應用程序。

服務可以在計算機啟動時自動啟動,可以暫停和重新啟動而且不顯示任何用戶界面。

服務非常適合在服務器上使用,或任何時候,為了不影響在同一台計算機上工作的其他用戶,需要長時間運行功能時使用。

還可以在不同於登錄用戶的特定用戶帳戶或默認計算機帳戶的安全上下文中運行服務

一、創建服務

1、VS新建一個Windows服務項目,命名MyWindowsService

2、修改Service1為MyService,F7進入代碼頁面(點擊切換代碼視圖),編寫操作邏輯代碼

3、OnStart用於執行服務事件,一般采用線程方式執行方法,便於隔一段事件執行一回

using System;
using System.IO;
using System.ServiceProcess;
using System.Threading.Tasks;

namespace MyWindowsService
{
    public partial class MyService : ServiceBase
    {
        public MyService()
        {
            InitializeComponent();
        }
        //服務開啟
        protected override void OnStart(string[] args)
        {
            Task.Factory.StartNew(Handle);
        }
        //服務關閉
        protected override void OnStop()
        {
           
        }

        //需要定時執行的代碼段
        private void Handle()
        {
            while (true)
            {
                try
                {
                    var path = AppDomain.CurrentDomain.BaseDirectory + "service.log";
                    var context = "MyWindowsService: Service Stoped " + DateTime.Now + "\n";
                    WriteLogs(path, context);
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }


        public void WriteLogs(string path, string context)
        {
            var fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);
            var sw = new StreamWriter(fs);
            sw.BaseStream.Seek(0, SeekOrigin.End);
            sw.WriteLine(context);

            sw.Flush();
            sw.Close();
            fs.Close();
        }
    }
}

服務不能直接運行,F5會出現

二、創建服務安裝程序

1、選中MyService.cs,右鍵-->查看設計器 ;在設計器中右鍵-->添加安裝程序

2、項目中添加了ProjectInstaller.cs文件,該文件中視圖自動會添加倆個組件serviceProcessInstaller1和serviceInstaller1

3、選中serviceProcessInstaller1組件,查看屬性,設置account為LocalSystem,這樣能保證無論是什麼用戶登錄都能執行。

4、選中serviceInstaller1組件,查看屬性設置如下

ServiceName:表示在系統服務中的名稱

StartType:Manual:手動啟動,默認停止,Automatic:自動啟動

Description:服務描述

三、安裝、卸載服務

安裝服務需要InstallUtil.exe,一般在電腦這個目錄找到C:\Windows\Microsoft.NET\Framework64\v4.0.30319 

此處需要注意的是,在C:\Windows\Microsoft.NET\Framework目錄下有很多類似版本,具體去哪個目錄要看項目的運行環境,例 如果是.net framework2.0則需要輸入 cd C:\Windows\Microsoft.NET\Framework\v2.0.50727

1、重新生成MyWindowsService項目

2、生成的bin目錄考到要安裝的目錄(服務文件已經在附件中):例如:拷貝到C:\(服務路徑根據實際情況安裝,卸載)

3、窗口+R 打開cmd

      cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319

安裝服務: Installutil C:\bin\Debug\MyWindowsService.exe

卸載服務: Installutil /u C:\bin\Debug\MyWindowsService.exe

4、我的電腦-->右鍵管理-->服務和應用程序-->服務  找到我們的服務

啟動服務後會一直執行Handle()方法寫日志

四、調試服務

首先確保服務已經安裝成功,並且處於已啟動

VS-->調試-->附加到進程 找到我們服務名稱MyWindowsService確定

然後斷點就進代碼了

如果出現MyWindowsService.exe無法復制或者進程占用的問題

打開進程管理器,關閉MyWindowsService.exe進程就可以了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved