Abbiamo bisogno di disporre o terminare una discussione in C # dopo l’uso?

Ho il codice seguente:

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); 

Voglio che l’invio della posta avvenga in background senza interferire con il thread principale. Non mi interessa quando è finito.

Devo in qualche modo gestire lo smaltimento del thread creato ( mailThread )? O si dispone automaticamente quando termina il suo lavoro?

Si prega di non raccomandare il metodo SendAsync. Vorrei creare il thread manualmente. Mail.Send era solo uno scenario di esempio.

Grazie.

NO!

non è necessario disporre dell’object Thread (BTW, la class Thread non fornisce il metodo Dispose).

Il filo è diposed quando la sua routine viene alla fine.
Quindi NO, non devi farlo, non è necessario (né ansible, penso).

Bene, il tuo SmtpClient dovrebbe essere Dispose() ‘d. Userò la libreria parallela Task invece di creare thread non elaborati:

 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); } }); }