thread terminar requested programacion parametros multihilo hilos esperar detener delegados con c# multithreading smtpclient

requested - ¿Necesitamos eliminar o terminar un hilo en C#después del uso?



thread abort c# (3)

Tengo el siguiente código:

public static void Send(this MailMessage email) { if (!isInitialized) Initialize(false); //smtpClient.SendAsync(email, ""); email.IsBodyHtml = true; Thread mailThread = new Thread(new ParameterizedThreadStart( (o) => { var m = o as MailMessage; SmtpClient client= new SmtpClient("smtpserveraddress"); client.Send(m); })); mailThread.Start(email);

Quiero que el envío de correo se realice en segundo plano sin interferir con el hilo principal. No me importa cuando esté terminado.

¿Necesito manejar de alguna manera la disposición del hilo creado ( mailThread )? ¿O se desecha automáticamente cuando termina su trabajo?

Por favor, no recomiende el método SendAsync. Me gustaría crear el hilo manualmente. Mail.Send fue solo un ejemplo de escenario.

Gracias.


¡NO!

no es necesario desechar el objeto Thread (por cierto, la clase Thread no proporciona el método Dispose).


Bueno, su SmtpClient debería ser Dispose() ''d. Usaría la biblioteca paralela de tareas en lugar de crear subprocesos sin procesar:

public static void Send(this MailMessage email) { if (!isInitialized) Initialize(false); //smtpClient.SendAsync(email, ""); email.IsBodyHtml = true; Task.Factory.StartNew(() => { // Make sure your caller Dispose()''s the email it passes in at some point! using (SmtpClient client = new SmtpClient("smtpserveraddress")) { client.Send(email); } }); }


El hilo se vierte cuando su rutina llega al final.
Entonces NO, no tienes que hacerlo, no es necesario (ni creo que sea posible).