ループしてループごとにメールを送信する for ループがあります。現在、thread.sleep()を使用していますが、ユーザーがプログラムとやり取りできるようにしたいので、その1つのループをデラップするだけです。thread.sleep を使わずにこれを行うことは可能ですか?
1022 次
4 に答える
1
UIスレッドでループを実行していますか?その場合は、Task.Factory.StartNewを使用して、別のスレッドでループを実行します。その時点で電子メールの送信を遅らせる必要がある場合は、実際にループを開始する前にThread.Sleepを配置してください。
次のようになります。
private void OnButtonClick(object sender, EventArgs e)
{
//This code happens on the UI thread
Task.Factory.StartNew(SendEmails);
}
private void SendEmails()
{
Thread.Sleep(500);
foreach(var email in emailAddresses) {
SendEmail(email);
}
}
于 2012-10-01T15:07:01.743 に答える
0
コードをバックグラウンドスレッドにシフトしてみてください。
于 2012-10-01T15:06:35.597 に答える
0
GUI をインタラクティブに保つには、メールの送信方法を別のスレッドに入れる必要があります。
Thread newThread = new Thread(new ThreadStart(SendMail));
newThread.Start();
public void SendMail()
{
//Send mails here
}
于 2012-10-01T15:05:51.033 に答える
0
UI スレッドをロックしないように、新しいスレッドをスピンオフしてメールを送信できます。
于 2012-10-01T15:06:04.033 に答える