发送电子邮件时的线程
时间:2020-03-06 14:43:12 来源:igfitidea点击:
我有一个发送电子邮件的简单功能,如何使用线程加快电子邮件的发送速度?
示例代码将是理想的。
解决方案
使用SendAsync istead。
使用静态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/zh-cn/library/xx3ezzs2.aspx
有关ThreadPool的详细信息http://msdn.microsoft.com/zh-cn/library/3dasc8as(VS.80).aspx
但是,使用单独的线程不会加快电子邮件的发送速度。它所要做的就是更快地将控制权返回给调用方法。因此,除非我们需要这样做,否则我什至不理会。
我们知道更好,更轻松的方法是创建一个应用程序后端,然后每30分钟发送一封电子邮件。将信息放入我们需要发送和发送的数据库中,创建一个每30分钟启动一次的应用程序池。启动时,我们可以发送电子邮件。无需等待事件处理程序发送电子邮件...
它对我们有用。只是认为这会对我们有所帮助。
请查看以下链接,以获取sendAsync方法的演示。 [MSDN]
http://msdn.microsoft.com/zh-CN/library/x5x13z6h(VS.80).aspx
我们可以在另一个线程中运行该函数。作为SendMail的邮件发件人功能,我们可以:
ThreadPool.QueueUserWorkItem(delegate { SendMail(message); });
当我们使用多个线程发送电子邮件时,请小心,以免被isp识别为垃圾邮件。最好选择较小的批次,每批次之间要有一些延迟。