gpt4 book ai didi

c# - C# 中的线程和 lambda

转载 作者:行者123 更新时间:2023-11-30 22:36:48 28 4
gpt4 key购买 nike

我有以下代码,每 60 秒向我们的收件人列表发送一批电子邮件。我不确定该怎么做才能到达线程的已完成部分,以便在完成后我可以记录发送了多少电子邮件的最终状态。这在 lambda 风格的线程中是可能的还是我必须做其他事情?谢谢。

(new Thread(()=>
{
message.To.Clear();

var emailsToSend = memberlist.Skip(currentCount).Take(takeCount).ToList();

foreach (var email in emailsToSend)
{
message.To.Add(new MailAddress(email.Email));
//for logging purposes
campaign.SentTo.Add(new BroadcastEmailCampaignSentTo
{
MemberId = email.MemberId,
Email = email.Email,
DateSent = DateTime.Now
});
}
})).Start(pauseTime);

最佳答案

我会建议使用任务,而不是线程,我快速地把一些东西放在一起来展示这个概念:

        string[] emailsToSend = { "peter@test.com", "paul@test.com", "mary@test.com" };

List<Task> tasks = new List<Task>();

foreach (var email in emailsToSend) {
var e = email;
tasks.Add(Task.Factory.StartNew(() => { Console.WriteLine("Sending Email to {0}", e); Thread.Sleep(5000); }));
}

Task.Factory.ContinueWhenAll(tasks.ToArray(), (_) => { Console.WriteLine("All Emails sent!"); });

Console.ReadKey();

关于c# - C# 中的线程和 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6809443/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com