2010-02-14 26 views

Respuesta

6

En lugar de dormir, querrá crear un EventWaitHandle y usar WaitOne con un tiempo de espera agotado.

Cuando desee que el subproceso se active temprano, simplemente establecerá el evento como señalado.

En primer lugar crear el EventWaitHandle:

wakeUpEvent = new EventWaitHandle(false, EventResetMode.ManualReset); 

Luego, en el hilo:

wakeUpEvent.WaitOne(new TimeSpan(1, 0, 0)); 

Cuando el programa principal quiere despertar el hilo principios:

wakeUpEvent.Set(); 

Nota: Puede configurar el evento para restablecimiento automático o restablecimiento manual. El reinicio automático significa que una vez que WaitOne regresa del evento, lo establecerá de nuevo en no señalizado. Esto es útil si está en un bucle y señala múltiples veces.

+0

Si desea que el subproceso se detenga automáticamente y escriba manualmente: wakeUpEvent = new EventWaitHandle (false, EventResetMode.ManualReset | EventResetMode.AutoReset); ahora, si el temporizador finaliza, el hilo volverá a funcionar, y también puede detenerlo manualmente. – aharon

1

Un hilo se puede iniciar esperando en un WaitObject y teniendo el otro hilo llamando al método Set en él. Mira el WaitHandle.WaitOne method.

Here's artículo que también puede ser de ayuda.

Cuestiones relacionadas