共用方式為


作法:以程式設計方式撰寫服務

注意

本文不適用於 .NET 中的託管服務。 如需使用 Microsoft.Extensions.Hosting.BackgroundService 和背景工作角色服務範本之 Windows 服務的最新內容,請參閱:

如果您選擇不使用 Windows 服務專案範本,則可以藉由自行設定繼承和其他基礎結構元素來撰寫自己的服務。 當您以程式設計方式建立服務時,必須執行範本會為您處理的數個步驟:

  • 您必須將服務類別設定為繼承自 ServiceBase 類別。

  • 您必須建立服務專案的 Main 方法,以定義要執行的服務並在其上呼叫 Run 方法。

  • 您必須覆寫 OnStartOnStop 程序,並填入任何要執行的程式碼。

以程式設計方式撰寫服務

  1. 依照下列步驟來建立空白的專案,並建立必要命名空間的參考:

    1. 在 [方案總管] 中,以滑鼠右鍵按一下 [參考] 節點,然後按一下 [加入參考]

    2. 在 [.NET Framework] 索引標籤上,捲動到 [System.dll],然後按一下 [選取]

    3. 捲動到 [System.ServiceProcess.dll],然後按一下 [選取]

    4. 按一下 [確定]

  2. 加入類別,並將它設定為繼承自 ServiceBase

    public class UserService1 : ServiceBase
    {
    }
    
    Public Class UserService1
        Inherits System.ServiceProcess.ServiceBase
    End Class
    
  3. 加入下列程式碼來設定您的服務類別:

    public UserService1()
    {
        ServiceName = "MyService2";
        CanStop = true;
        CanPauseAndContinue = true;
        AutoLog = true;
    }
    
    Public Sub New()
        Me.ServiceName = "MyService2"
        Me.CanStop = True
        Me.CanPauseAndContinue = True
        Me.AutoLog = True
    End Sub
    
  4. 為類別建立 Main 方法,並使用它來定義類別將包含的服務;userService1 是類別的名稱:

    public static void Main()
    {
        ServiceBase.Run(new UserService1());
    }
    
    Shared Sub Main()
        System.ServiceProcess.ServiceBase.Run(New UserService1)
    End Sub
    
  5. 覆寫 OnStart 方法,並定義您想要在啟動服務時發生的任何處理。

    protected override void OnStart(string[] args)
    {
        // Insert code here to define processing.
    }
    
    Protected Overrides Sub OnStart(ByVal args() As String)
        ' Insert code here to define processing.
    End Sub
    
  6. 覆寫您想要定義自訂處理的其他任何方法,並撰寫程式碼來判斷服務應該在每個案例中採取的動作。

  7. 為服務應用程式加入必要的安裝程式。 如需詳細資訊,請參閱如何:將安裝程式加入服務應用程式

  8. 從 [建置] 功能表選取 [建置方案],以建置您的專案。

    注意

    請勿按 F5 執行您的專案,您無法透過這個方法來執行服務專案。

  9. 建立安裝專案和自訂動作來安裝您的服務。 如需範例,請參閱逐步解說:在元件設計工具中建立 Windows 服務應用程式

  10. 安裝服務。 如需詳細資訊,請參閱 How to: Install and Uninstall Services

另請參閱