我们是否需要在使用后在C#中处置或终止线程?

我有以下代码:

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

我希望邮件发送在后台完成而不会干扰主线程。 它完蛋后我不在乎。

我是否需要以某种方式处理创建的线程( mailThread )的处理? 还是在完成工作后会自动处理?

请不要推荐SendAsync方法。 我想手动创建线程。 Mail.Send只是一个示例场景。

谢谢。

没有!

没有必要处理Thread对象(BTW,Thread类不提供Dispose方法)。

当程序结束时,线程被放弃。
所以不,你不必这样做,没有必要(也许我认为)。

好吧,你的SmtpClient应该是Dispose() ‘d。 我使用任务并行库而不是创建原始线程:

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