이 설명서는 보관되지만 유지 되지 않습니다.

ServiceBase.OnStop 메서드

업데이트: 2007년 11월

파생 클래스에서 구현되는 경우 중지 명령이 SCM(서비스 제어 관리자)에 의해 서비스에 전달될 때 실행됩니다. 서비스 실행이 중지될 때 수행할 동작을 지정합니다.

네임스페이스:  System.ServiceProcess
어셈블리:  System.ServiceProcess(System.ServiceProcess.dll)

protected virtual void OnStop()
protected void OnStop()
protected function OnStop()

OnStop을 사용하여 서비스가 중지 명령을 수신할 때 발생할 프로세스를 지정합니다.

SCM이 중지 명령을 수신할 때 SCM은 CanStop의 값을 사용하여 서비스가 중지 명령을 허용하는지 여부를 확인합니다. CanStoptrue이면 중지 명령이 서비스에 전달되고 OnStop 메서드가 정의되어 있으면 이 메서드가 호출됩니다. 서비스에서 OnStop이 구현되지 않은 경우 SCM은 중지 명령을 처리합니다.

CanStopfalse이면 SCM이 중지 명령을 무시하여 서비스에 전달되지 않습니다. 중지 명령은 예외를 반환하여 throw합니다.

OnStop은 파생 클래스에서 재정의해야 합니다. 서비스를 유용하게 사용하려면 OnStartOnStop 모두를 해당 서비스 클래스에서 구현해야 합니다.

다음 예제에서는 ServiceBase에서 파생된 서비스 클래스의 OnStop 메서드를 구현하는 방법을 보여 줍니다. 이 코드 예제는 ServiceBase 클래스에 대해 제공되는 보다 큰 예제의 일부입니다.

        // Stop this service.
        protected override void OnStop()
        {
            // New in .NET Framework version 2.0.
            this.RequestAdditionalTime(4000);
            // Signal the worker thread to exit.
            if ((workerThread != null) && (workerThread.IsAlive))
            {
#if LOGEVENTS
                EventLog.WriteEntry("SimpleService.OnStop", DateTime.Now.ToLongTimeString() +
                    " - Stopping the service worker thread.");
#endif
                pause.Reset();
                Thread.Sleep(5000);
                workerThread.Abort();

            }
            if (workerThread != null)
            {
#if LOGEVENTS
                EventLog.WriteEntry("SimpleService.OnStop", DateTime.Now.ToLongTimeString() +
                    " - OnStop Worker thread state = " +
                    workerThread.ThreadState.ToString());
#endif
            }
            // Indicate a successful exit.
            this.ExitCode = 0;
        }


  • 직접 실행 호출자의 경우 완전히 신뢰합니다. 이 멤버는 부분적으로 신뢰할 수 있는 코드에서 사용할 수 없습니다. 자세한 내용은 부분 신뢰 코드에서 라이브러리 사용을 참조하십시오.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

.NET Framework

3.5, 3.0, 2.0, 1.1, 1.0에서 지원
표시: