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)
我不知道如何做这项工作,任何帮助将不胜感激.
谢谢,
System.Net.ServicePointManager.MaxServicePointIdleTime = 1;
Run Code Online (Sandbox Code Playgroud)
这几乎可以肯定是导致问题的原因.它影响System.Net类使用的内部计时器.不完全确定它的作用,我认为与超时有关.该计时器创建一个线程池线程.更改值后,计时器将每秒创建一千个线程池线程.显然设置值不会在创建计时器后更改计时器.该属性的正常值为100000,值1可能从未测试过.