2010-12-28 33 views
16

Im utilizando una clase de gmail para que mi aplicación pueda enviarme notificaciones sobre gmail.¿Se cierra un hilo automáticamente?

su hacer así:

public static void SendMessage(string message) 
{ 
    Notification.message = message; 

    Thread t = new Thread(new ThreadStart(SendMessageThreaded)); 
    t.Start(); 
} 

y la mirada función de roscado como esto:

private static void SendMessageThreaded() 
{ 
    try 
    { 
     if (Notification.message != "") 
      RC.Gmail.GmailMessage.SendFromGmail("accname", "accpass", "email", "subject", Notification.message); 

     Notification.message = ""; 
    } 
    catch 
    { } 
} 

Así que después de SendMessageThreaded se ejecuta, ¿se estrecha por sí mismo o tengo que

t.Start() 
t.Abort() 

o algo?

Respuesta

25

El hilo debe iniciarse una vez; en ese punto ejecutará el bloque de código asignado y saldrá.

No es necesario para limpiar de manera explícita el hilo en la mayoría de los casos (a menos que desee para rescatar a temprana por ejemplo)

7

Sí, el hilo está cerrado por sí mismo.

Ahí es cuando se han llamado todas las instrucciones del método ejecutado en el hilo secodn.

6

El hilo quedará fuera del alcance y estará disponible para la recogida de basura tan pronto como finalice SendFromGmail.

Así que sí, se cierra automáticamente.

1

El Abortar() método produce una ThreadAbortException que puede manejar:

public void SendMessageThreaded() 
{ 
    try 
    { 
     // thread logic 
    } 
    catch (ThreadAbortException tae) 
    { 
     // thread was aborted, by t.Abort() 
    } 
    catch (Exception ex) 
    { 
     // other error 
    } 
} 

mediante el uso de

t.Abort(myObject) 

puede "enviar" cualquier objeto que le ayudará a manejar el manejo de aborto. Puede usar la propiedad ExceptionState para acceder a ese objeto.

5

No es necesario, volverá al grupo de subprocesos y esperará a que se realice otra tarea, si no se matará solo.

+0

No, esto no es un hilo de Pool. No será reutilizado. –

7

sí, definitivamente. se cerrará cuando termine.

1

Sí, se cerrará, pero debe tener un tiempo de espera para evitar zombies de todos modos si el hilo principal se cuelga mientras el segundo hilo lo está esperando.

Cuestiones relacionadas