4

メールを送信するシンプルな機能がありますが、スレッドを使用してメール配信を高速化するにはどうすればよいですか?

サンプルコードが理想的です。

4

8 に答える 8

8

SendAsyncisnteadを使用します。

于 2008-09-25T13:24:26.180 に答える
3

sendAsync メソッドのデモについては、次のリンクを参照してください。[MSDN]

http://msdn.microsoft.com/en-ca/library/x5x13z6h(VS.80).aspx

于 2008-09-25T13:33:46.003 に答える
2

関数を別のスレッドで実行できます。SendMail をメール送信機能として使用すると、次のことができます。

ThreadPool.QueueUserWorkItem(delegate { SendMail(message); });
于 2008-09-25T13:34:25.563 に答える
2

IN 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);
    }
}
于 2013-01-30T11:01:19.613 に答える
1

次のようなものを使用して、別のスレッドでやりたいことをクラスに開始させる静的な 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

于 2008-09-25T13:28:37.357 に答える
1

ただし、別のスレッドを使用しても、電子メールの配信は高速化されません。呼び出し元のメソッドに制御をより速く戻すだけです。あなたがそれをする必要がない限り、私はそれを気にしません。

于 2008-09-25T13:30:48.613 に答える
1

複数のスレッドを使用して電子メールを送信する場合は、ISP によってスパムとして識別されないように注意してください。各バッチ間に多少の遅延がある小さなバッチを選択することをお勧めします。

于 2008-09-25T14:08:13.203 に答える
-1

アプリケーションのバックエンドを作成し、30 分ごとにメールを送信する方が、より便利で簡単なことはご存知でしょう。データベースとの間で送受信する必要がある情報をデータベースに投入し、30 分ごとに起動するアプリケーション プールを作成します。起動したら、メールを送信できます。イベント ハンドラがメールを送信するのを待つ必要はありません...

それは私たちのために働きます。それがあなたに役立つと思っただけです。

于 2008-09-25T13:31:19.423 に答える