ServiceBase.OnStart(String[]) 方法

定義

在衍生類別中實作時,當服務控制管理員 (SCM) 傳送啟動命令至服務或當作業系統啟動 (自動啟動服務) 時執行。 指定在服務啟動時所要執行的動作。

protected:
 virtual void OnStart(cli::array <System::String ^> ^ args);
protected virtual void OnStart (string[] args);
abstract member OnStart : string[] -> unit
override this.OnStart : string[] -> unit
Protected Overridable Sub OnStart (args As String())

參數

args
String[]

啟動命令所傳遞的資料。

備註

使用 OnStart 來指定服務收到 Start 命令時所發生的處理。 OnStart 是您指定服務行為的方法。 OnStart 可以採用引數作為傳遞資料的方式,但此使用方式很少見。

警告

請勿使用 建構函式來執行應該在 中的 OnStart 處理。 使用 OnStart 來處理服務的所有初始化。 建構函式會在應用程式的可執行檔執行時呼叫,而不是在服務執行時呼叫。 可執行檔會在 之前 OnStart 執行。 例如,當您繼續時,不會再次呼叫建構函式,因為 SCM 已經將物件存放在記憶體中。 如果 OnStop 釋放在建構函式中配置的資源,而不是 中的 OnStart ,則第二次呼叫服務時,將不會再次建立所需的資源。

當電腦重新開機時,可以將 服務安裝程式上的 設定 StartTypeAutomatic ,以自動啟動服務。 在這種情況下, OnStart 會在系統啟動時呼叫 。

OnStart 預期會在衍生類別中覆寫。 若要讓服務很有用, OnStart 而且 OnStop 兩者都應該在您的服務類別中實作。

在 方法中 OnStart 處理服務的初始化引數,而不是在 Main 方法中。 您可以在 Services 主控台中服務的屬性視窗中手動設定參數陣列中的引數 args 。 不會儲存在主控台中輸入的引數;從控制台啟動服務時,它們會以一次性方式傳遞至服務。 當服務自動啟動時必須存在的引數可以放在服務的登錄機碼 (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ <service name>) 的 ImagePath 字串值中。 您可以使用 方法從登錄 GetCommandLineArgs 取得引數,例如: string[] imagePathArgs = Environment.GetCommandLineArgs();

適用於

另請參閱