共用方式為


HOW TO:以程式設計方式撰寫服務

更新:2007 年 11 月

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

  • 您必須設定要繼承自 ServiceBase 類別的服務類別。

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

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

    注意事項:

    Visual Studio 的標準版中不能使用 Windows 服務範本和相關的功能。

若要以程式設計方式撰寫服務

  1. 建立空白專案,並遵循以下步驟,建立必要命名空間的參考:

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

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

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

    4. 按一下 [確定]。

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

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

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

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

    Protected Overrides Sub OnStart(ByVal args() As String)
      ' Insert code here to define processing.
    End Sub
    
     protected override void OnStart(string[] args)
        {
            // Insert code here to define processing.
        }
    
        protected void OnStart(System.String[] args)
        {
            // Insert code here to define processing.
        }
    
  6. 覆寫其他您希望定義自訂處理的任何方法,並撰寫程式碼來決定服務在每一種情況下應採取的動作。

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

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

    注意事項:

    請勿按 F5 執行專案,因為您無法以這種方式執行服務專案。

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

  10. 安裝服務。如需詳細資訊,請參閱 HOW TO:安裝及解除安裝服務

請參閱

工作

HOW TO:建立 Windows 服務

HOW TO:加入 Installer 至服務應用程式

HOW TO:記錄關於服務的資訊

逐步解說:在元件設計工具中建立 Windows 服務應用程式

逐步解說:建立自訂動作

概念

Windows 服務應用程式簡介

安裝專案