ServiceBase.OnStart メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > ServiceBase.OnStart メソッドの意味・解説 

ServiceBase.OnStart メソッド

派生クラス実装されると、Start コマンドサービス コントロール マネージャ (SCM) によってサービス送信されるとき、またはオペレーティング システムが (自動的に起動するサービスのために) 起動するときに実行されます。サービス開始するときに実行されるアクション指定します

名前空間: System.ServiceProcess
アセンブリ: System.ServiceProcess (system.serviceprocess.dll 内)
構文構文

Protected Overridable Sub
 OnStart ( _
    args As String() _
)
Dim args As String()

Me.OnStart(args)
protected virtual void OnStart (
    string[] args
)
protected:
virtual void OnStart (
    array<String^>^ args
)
protected void OnStart (
    String[] args
)
protected function OnStart (
    args : String[]
)

パラメータ

args

Start コマンドによって渡されデータ

解説解説

OnStart使用してサービスStart コマンド受け取ったときに発生する処理を指定しますOnStart は、サービス動作指定するメソッドです。OnStart は、データを渡す方法として引数をとることができますが、この方法はほとんど使用されません。

注意に関するメモ注意

OnStart で行う必要がある処理をコンストラクタ使用して実行しないくださいOnStart使用してサービス初期化をすべて処理しますコンストラクタは、サービス実行されているときではなくアプリケーションの実行可能ファイル実行されているときに、呼び出されます。実行可能ファイルOnStart前に実行されます。たとえば、継続する場合オブジェクトSCM で既にメモリ格納されているため、コンストラクタ再度呼び出されません。OnStop が OnStart割り当てられリソースではなくコンストラクタ割り当てられリソース解放する場合は、2 度目サービス呼び出すときに、必要なリソース再作成されません。

サービスインストーラで StartType を設定すると、コンピュータ再起動時にサービス設定できますこのような場合は、システム起動時OnStart呼び出されます。

OnStart は、派生クラスオーバーライドされますサービス有効に使用するには、OnStartOnStop両方サービス クラス実装する必要があります

使用例使用例

ServiceBase から派生したサービス クラスに対して OnStart メソッド実装する例を次に示します。このコード例は、ServiceBase クラストピック取り上げているコード例一部分です。

    ' Start the service.
    Protected Overrides Sub
 OnStart(ByVal args() As String)
        Dim handle As IntPtr = Me.ServiceHandle
        myServiceStatus.currentState = Fix(State.SERVICE_START_PENDING)
        SetServiceStatus(handle, myServiceStatus)

        ' Start a separate thread that does the actual work.
        If workerThread Is Nothing
 OrElse (workerThread.ThreadState And System.Threading.ThreadState.Unstarted
 Or System.Threading.ThreadState.Stopped) <> 0 Then
#If LOGEVENTS Then
            System.Diagnostics.EventLog.WriteEntry("SimpleService.OnStart",
 DateTime.Now.ToLongTimeString() + _
                " - Starting the service worker thread.")
#End If

            workerThread = New Thread(New ThreadStart(AddressOf
 ServiceWorkerMethod))
            workerThread.Start()
        End If
        If Not (workerThread Is
 Nothing) Then
#If LOGEVENTS Then
            System.Diagnostics.EventLog.WriteEntry("SimpleService.OnStart",
 DateTime.Now.ToLongTimeString() + _
                " - Worker thread state = " + workerThread.ThreadState.ToString())
#End If
        End If
        myServiceStatus.currentState = Fix(State.SERVICE_RUNNING)
        SetServiceStatus(handle, myServiceStatus)

    End Sub 'OnStart

        // Start the service.
        protected override void OnStart(string[]
 args)
        {
            IntPtr handle = this.ServiceHandle;
            myServiceStatus.currentState = (int)State.SERVICE_START_PENDING;
            SetServiceStatus(handle, myServiceStatus);

            // Start a separate thread that does the actual work.

            if ((workerThread == null) ||
                ((workerThread.ThreadState &
                 (System.Threading.ThreadState.Unstarted | System.Threading.ThreadState.Stopped))
 != 0))
            {
#if LOGEVENTS
                EventLog.WriteEntry("SimpleService.OnStart", DateTime.Now.ToLongTimeString()
 +
                    " - Starting the service worker thread.");
#endif

                workerThread = new Thread(new
 ThreadStart(ServiceWorkerMethod));
                workerThread.Start();
            }
            if (workerThread != null)
            {
#if LOGEVENTS
                EventLog.WriteEntry("SimpleService.OnStart", DateTime.Now.ToLongTimeString()
 +
                    " - Worker thread state = " +
                    workerThread.ThreadState.ToString());
#endif
            }
            myServiceStatus.currentState = (int)State.SERVICE_RUNNING;
            SetServiceStatus(handle, myServiceStatus);

        }
    // Start the service.
protected:
    virtual void OnStart( array<String^>^  ) override
    {
        // Start a separate thread that does the actual work.
        if ( (workerThread == nullptr) || ((workerThread->ThreadState
 & (System::Threading::ThreadState::Unstarted | System::Threading::ThreadState::Stopped))
 != (System::Threading::ThreadState)0) )
        {
            Trace::WriteLine( DateTime::Now.ToLongTimeString() + " - Starting
 the service worker thread.", "OnStart" );
            workerThread = gcnew Thread( gcnew ThreadStart( this,&SimpleService::ServiceWorkerMethod
 ) );
            workerThread->Start();
        }

        if ( workerThread != nullptr )
        {
            Trace::WriteLine( DateTime::Now.ToLongTimeString() + " - Worker
 thread state = " + workerThread->ThreadState.ToString(), "OnStart"
 );
        }
    }
.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
ServiceBase クラス
ServiceBase メンバ
System.ServiceProcess 名前空間
OnContinue
OnPause
OnPowerEvent
OnShutdown
OnStop
OnCustomCommand



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

ServiceBase.OnStart メソッドのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ServiceBase.OnStart メソッドのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.

©2024 GRAS Group, Inc.RSS