ServiceBase.OnStart(String[]) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
当在派生类中实现时,在下列情况下执行:在“服务控制管理器”(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指定服务收到"开始"菜单命令时发生的处理。 OnStart 是指定服务行为的方法。 OnStart 可以采用参数作为传递数据的一种方式,但这种用法很少见。
注意
请勿使用构造函数执行应位于 OnStart的处理。 用于 OnStart 处理服务的所有初始化。 当应用程序的可执行文件运行时,而不是在服务运行时调用构造函数。 可执行文件在之前 OnStart运行。 例如,继续时,不会再次调用构造函数,因为 SCM 已将对象保存在内存中。 如果 OnStop 释放在构造函数而非构造 OnStart函数中分配的资源,则第二次调用服务时,将不会再次创建所需的资源。
可以通过将服务安装程序Automatic设置为StartType在计算机重新启动时自动启动服务。 在这种情况下, OnStart 将在系统启动时调用。
OnStart 应在派生类中重写。 若要使服务有用, OnStart 应在 OnStop 服务类中实现这两个服务。
在方法中 OnStart 处理服务的初始化参数,而不是在 Main 方法中。 可以在服务控制台中服务的属性窗口中手动设置参数数组中的 args
参数。 控制台中输入的参数不会保存;当从控制面板启动服务时,它们将一次性传递到服务。 当服务自动启动时必须存在的参数可以放置在服务的注册表项 (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<service name>) 的 ImagePath 字符串值中。 可以使用方法GetCommandLineArgs从注册表获取参数,例如: string[] imagePathArgs = Environment.GetCommandLineArgs();