发送电子邮件后,应用程序使用50%的CPU

Tes*_*101 0 .net c# email smtpclient

我有一个我正在处理的应用程序,当我尝试发送电子邮件时,电子邮件发送成功,但应用程序然后使用50%的CPU直到它关闭.

这是导致问题的send方法.

public void Send()
{
    if(System.String.IsNullOrEmpty(this.Server))
    {
        throw new PreferenceNotSetException("Server not set");
    }
    if(System.String.IsNullOrEmpty(this.From))
    {
        throw new PreferenceNotSetException("E-Mail address not set.");
    }
    if(System.String.IsNullOrEmpty(this.To))
    {
        throw new PreferenceNotSetException("Recipients E-Mail address not set.");
    }
    using(System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(this.From, this.To, this.Subject, this.FormattedText))
    {
        message.IsBodyHtml = true;
        System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(this.Server);
        client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
        int temp = System.Net.ServicePointManager.MaxServicePointIdleTime;
        System.Net.ServicePointManager.MaxServicePointIdleTime = 1;
        try 
        {
            client.Send(message);
        }  
        catch(System.Exception ex) 
        {
            //For debugging only.
            System.Windows.Forms.MessageBox.Show(ex.ToString());              
        }
        finally
        {
            System.Net.ServicePointManager.MaxServicePointIdleTime = temp;
            //client.Dispose(); No dispose in .Net 2.0
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知道如何做这项工作,任何帮助将不胜感激.

谢谢,

Han*_*ant 5

      System.Net.ServicePointManager.MaxServicePointIdleTime = 1;
Run Code Online (Sandbox Code Playgroud)

这几乎可以肯定是导致问题的原因.它影响System.Net类使用的内部计时器.不完全确定它的作用,我认为与超时有关.该计时器创建一个线程池线程.更改值后,计时器将每秒创建一千个线程池线程.显然设置值不会在创建计时器后更改计时器.该属性的正常值为100000,值1可能从未测试过.