Hay que utilizar OnPause para especificar el procesamiento que tiene lugar cuando el servicio recibe un comando Pausar. Se espera que OnPause se reemplace cuando la propiedad CanPauseAndContinue sea true.
Cuando se hace que un servicio que estaba en pausa continúe (a través de la consola Servicios o mediante programación), el procesamiento de OnContinue se ejecuta y el servicio se vuelve a activar.
El comando Pausar sólo permite que la aplicación reaccione ante un evento específico. OnPause no realiza ninguna operación en el servicio que no se haya definido.
Si envía una solicitud Pausar al servicio, podrá conservar los recursos del sistema, ya que Pausar no necesita liberar todos los recursos del sistema. Por ejemplo, si el proceso ha abierto subprocesos, realizar una pausa en un servicio en vez de detenerlo puede permitir que los subprocesos permanezcan abiertos, obviando la necesidad de reasignarlos cuando continúe el servicio. Si define Pausar para que libere todos los recursos del sistema, se comportará como un comando Detener.
Para especificar el procesamiento que tiene que producirse cuando el Administrador de control de servicios (SCM, Service Control Manager) pasa una solicitud Pausar o Continuar al servicio, hay que establecer CanPauseAndContinue en true y reemplazar OnPause y OnContinue. Debe implementarse OnContinue para deshacer el procesamiento de OnPause.
Si el valor de la propiedad CanPauseAndContinue es false, el SCM no pasará las solicitudes Pausar o Continuar al servicio, de manera que no se llamará a los métodos OnPause y OnContinue aunque estén implementados. En el SCM, los controles Pause y Continue están deshabilitados cuando CanPauseAndContinue es false.