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

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

ServiceBase.OnPause メソッド

派生クラスに実装されると、Pause コマンドがサービス コントロール マネージャ (SCM) によってサービスに送信されるときに実行されます。サービスが一時中断したときに実行されるアクションを指定します。

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

解説解説

OnPause を使用して、サービスが Pause コマンドを受け取ったときに発生する処理を指定します。CanPauseAndContinue プロパティが true の場合、OnPause はオーバーライドされます。

サービス アドインを使用して、またはプログラムによって、一時中断されたサービスを継続する場合は、OnContinue 処理が実行され、サービスは再度アクティブになります。

Pause コマンドは、アプリケーションが特定のイベントに対して反応できるようにするだけです。OnPause は、実行するように定義していないサービスに対しては何も実行しません。

Pause はすべてのシステム リソースを解放する必要がないため、Pause 要求をサービスに送信しても、システム リソースは保持されます。たとえば、このプロセスでスレッドが開かれた場合は、サービスを停止するのではなく一時中断すると、スレッドを開いたままの状態に保つことができ、サービスを継続するときに再割り当ての必要がなくなります。すべてのシステム リソースを解放するように Pause を定義すると、Pause は Stop コマンドと同じように動作します。

CanPauseAndContinue を true に設定し、OnPause および OnContinue をオーバーライドして、SCM が Pause 要求または Continue 要求をサービスに渡すときに発生する処理を指定します。OnPause の処理を元に戻すには、OnContinue を実装する必要があります。

CanPauseAndContinue が false の場合、SCM は Pause 要求または Continue 要求をサービスに渡さないため、OnPause メソッドと OnContinue メソッドは、実装されている場合でも呼び出されません。SCM では、CanPauseAndContinue が false に設定されていると、Pause コントロールと Continue コントロールが無効になります。

使用例使用例

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

    ' Pause the service.
    Protected Overrides Sub
 OnPause()
        ' Pause the worker thread.
        If Not (workerThread Is
 Nothing) AndAlso workerThread.IsAlive AndAlso
 (workerThread.ThreadState And System.Threading.ThreadState.Suspended Or System.Threading.ThreadState.SuspendRequested) = 0 Then
#If LOGEVENTS Then
            System.Diagnostics.EventLog.WriteEntry("SimpleService.OnPause",
 DateTime.Now.ToLongTimeString() + _
                " - Pausing the service worker thread.")
#End If

            pause.Reset()
            Thread.Sleep(5000)
        End If

        If Not (workerThread Is
 Nothing) Then
#If LOGEVENTS Then
            System.Diagnostics.EventLog.WriteEntry("SimpleService.OnPause",
 DateTime.Now.ToLongTimeString() + _
                " OnPause - Worker thread state = "
 + workerThread.ThreadState.ToString())
#End If
        End If

    End Sub 'OnPause

        // Pause the service.
        protected override void OnPause()
        {
            // Pause the worker thread.
            if ((workerThread != null) &&
                (workerThread.IsAlive) &&
                ((workerThread.ThreadState &
                 (System.Threading.ThreadState.Suspended | System.Threading.ThreadState.SuspendRequested))
 == 0))
            {
#if LOGEVENTS
                EventLog.WriteEntry("SimpleService.OnPause", DateTime.Now.ToLongTimeString()
 +
                    " - Pausing the service worker thread.");
#endif

                pause.Reset();
                Thread.Sleep(5000);
            }

            if (workerThread != null)
            {
#if LOGEVENTS
                EventLog.WriteEntry("SimpleService.OnPause", DateTime.Now.ToLongTimeString()
 +
                    " OnPause - Worker thread state = " +
                    workerThread.ThreadState.ToString());
#endif
            }
        }
    // Pause the service.
protected:
    virtual void OnPause() override
    {
        // Pause the worker thread.
        if ( (workerThread != nullptr) && (workerThread->IsAlive)
 && ((workerThread->ThreadState & (System::Threading::ThreadState::Suspended
 | System::Threading::ThreadState::SuspendRequested)) == (System::Threading::ThreadState)0) )
        {
            Trace::WriteLine( DateTime::Now.ToLongTimeString() + " - Suspending
 the service worker thread.", "OnPause" );
            workerThread->Suspend();
        }

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



英和和英テキスト翻訳

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

辞書ショートカット

すべての辞書の索引

ServiceBase.OnPause メソッドのお隣キーワード

   

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



ServiceBase.OnPause メソッドのページの著作権

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

©2026 GRAS Group, Inc.RSS