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

Aar*_*ari 34 c# multithreading smtpclient

我有以下代码:

        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);
Run Code Online (Sandbox Code Playgroud)

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

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

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

谢谢.

pla*_*ton 48

没有!

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


Mar*_*rco 8

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

  • 但不是线程对象.线程对象有资格立即进行垃圾回收.http://stackoverflow.com/questions/3699147/c-sharp-thread-object-lifetime (5认同)