2012-03-14 27 views
5

Parece que no puedo crear una tarea de primer plano. mi hilo principal es necesario para llamar a otro hilo y luego salir. el otro hilo supone que debe funcionar siempreCómo crear una tarea en primer plano?

void MainThreadMain() 
{ 
    task_main = Task.Factory.StartNew(() => OtherThread()) ; 
    return; 
} 

void OtherThread() 
{ 
    while(true) 
    { 
    TellChuckNorrisJoke(); 
    } 
} 

cómo puedo garantizar task_main continuará funcionando incluso que el hilo principal está muerta? asumí il hacer:

task_main.IsBackgorund = false; 

pero ninguna de esas opciones: \ puedo hacer que mi hilo principal para esperar una señal de mi otro hilo que pasa al modo de primer plano. pero eso es completamente tonto.

+1

Lo garantiza * no * mediante un hilo. Simplemente llame a OtherThread() directamente, después de cambiar el nombre, por supuesto. –

+2

esta publicación puede ayudar. http://stackoverflow.com/questions/6156878/can-threads-started-by-tasks-parallel-library-act-as-foreground-threads – Krishna

Respuesta

5

La pregunta obvia es: ¿por qué no ejecutas tu trabajo en el hilo principal?

Suponiendo que esto no sea una opción, debe usar un Thread no un Task. Entonces se puede establecer:

Thread.IsBackground = false; 

Esto evitará que su aplicación desde la terminación mientras que el subproceso de trabajo se está ejecutando.

+1

Estoy creando un servicio. según tengo entendido, el método OnStart del servicio supone llamar a otro hilo y devolverlo. si no hay ningún hilo para mantener el programa vivo, saldrá. – Nahum

+2

¡Ah! Un Servicio de Windows es controlado por [Service Control Manager] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms685150 (v = vs.85) .aspx). Como tal, no tiene un "hilo principal" normal. 'OnStart' es llamado por el SCM y tiene razón en que debe regresar rápidamente. Entonces sí, tiene sentido comenzar un 'Thread' (no una' Task'). También deberá implementar 'OnPause' y' OnStop'. Consulte [MSDN: aplicaciones de servicio de Windows] (http://msdn.microsoft.com/en-us/library/y817hyb6.aspx). –

Cuestiones relacionadas