【发布时间】:2013-01-30 19:01:19
【问题描述】:
我有一个发送电子邮件的简单函数,我将如何使用线程来加快电子邮件传递速度?
示例代码将是理想的。
【问题讨论】:
-
有完整源代码的最终解决方案吗?
标签: c# multithreading email
我有一个发送电子邮件的简单函数,我将如何使用线程来加快电子邮件传递速度?
示例代码将是理想的。
【问题讨论】:
标签: c# multithreading email
使用 SendAsync 代替。
【讨论】:
查看以下链接以获取 sendAsync 方法的演示。 [MSDN]
http://msdn.microsoft.com/en-ca/library/x5x13z6h(VS.80).aspx
【讨论】:
您可以在另一个线程中运行该函数。作为 SendMail 您的邮件发件人功能,您可以:
ThreadPool.QueueUserWorkItem(delegate { SendMail(message); });
【讨论】:
在 4.0 中你可以使用以下,
new Thread(x => SendMail(message)).Start();
和
public static void SendEmail(MailMessage message)
{
using (SmtpClient client = new SmtpClient("smtp.XXXXXX.com"))
{
client.Send(message);
}
}
【讨论】:
使用静态 void 方法创建您的类,这将使您的类开始在单独的线程上执行您想要执行的操作,例如:
using System;
using System.Threading;
class Test
{
static void Main()
{
Thread newThread = new Thread(new ThreadStart(Work.DoWork));
newThread.Start();
}
}
class Work
{
Work() {}
public static void DoWork() {}
}
如果您不想自己管理线程,另一种选择是使用 ThreadPool 类。
有关线程的更多信息 - http://msdn.microsoft.com/en-us/library/xx3ezzs2.aspx
关于 ThreadPool 的更多信息 - http://msdn.microsoft.com/en-us/library/3dasc8as(VS.80).aspx
【讨论】:
但是,拥有单独的线程不会加快电子邮件的传递速度。它所要做的就是更快地将控制权返回给调用方法。所以除非你需要这样做,否则我什至不会打扰它。
【讨论】:
当您使用多个线程发送电子邮件时,请注意不要被您的 isp 识别为垃圾邮件。最好选择较小的批次,每批次之间有一些延迟。
【讨论】:
您知道更好更容易的是创建一个应用程序后端并每 30 分钟发送一次电子邮件。将信息放入您需要发送到那里和从那里发送出去的数据库中,创建一个每 30 分钟启动一次的应用程序池。当它启动时,您可以发送电子邮件。无需等待您的事件处理程序发送电子邮件...
它对我们有用。只是觉得它会对你有所帮助。
【讨论】: