Do we need to dispose or terminate a thread in C# after usage?

前端 未结 3 1677
隐瞒了意图╮
隐瞒了意图╮ 2020-12-09 02:06

I have the following code:

        public static void Send(this MailMessage email)
    {
        if (!isInitialized)
            Initialize(false);
        /         


        
相关标签:
3条回答
  • 2020-12-09 02:38

    NO!

    there is no need to dispose the Thread object (BTW, the Thread class does not provide the Dispose method).

    0 讨论(0)
  • 2020-12-09 02:40

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

    0 讨论(0)
  • 2020-12-09 02:47

    Well, your SmtpClient should be Dispose()'d. I'd use the Task Parallel Library instead of creating raw threads:

    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);
            }
        });
    }
    
    0 讨论(0)
提交回复
热议问题