I have the following code:
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);
I want the mail sending to be done in the background without interfering with the main thread. I do not care when it is finished.
Do I need to somehow handle the dispose of the created thread (mailThread)? Or does it automatically dispose when it finishes its job?
Please do not recommend the SendAsync method. I would like to create the thread manually. Mail.Send was only an example scenario.
Thank you.
Well, your
SmtpClient
should beDispose()
'd. I'd use the Task Parallel Library instead of creating raw threads:NO!
there is no need to dispose the Thread object (BTW, the Thread class does not provide the Dispose method).
Thread is diposed when its routine comes at end.
So NO, you don't have to do it, it's not necessary (nor possible I think).