发送电子邮件时的线程

时间: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识别为垃圾邮件。最好选择较小的批次,每批次之间要有一些延迟。