//线程池发送邮件 private static void SendEmailsUsingThreadPool(List<Recipient> recipients) { //线程数 var coreCount = Environment.ProcessorCount; //邮件数 var itemCount = recipients.Count; //每个线程执行记录数 var batchSize = itemCount / coreCount; var pending = coreCount; using (var mre = new ManualResetEvent(false)) { for (int batchCount = 0; batchCount < coreCount; batchCount++) { var lower = batchCount * batchSize; var upper = (batchCount == coreCount - 1) ? itemCount : lower + batchSize; ThreadPool.QueueUserWorkItem(st => { for (int i = lower; i < upper; i++) SendEmail(recipients[i]); if (Interlocked.Decrement(ref pending) == 0) mre.Set(); }); } mre.WaitOne(); } } //发送邮件方法 private static void SendEmail(Recipient recipient) { //Send your Emails here } } //邮件实体 class Recipient { public string FirstName { get; set; } public string LastName { get; set; } public string EmailAddress { get; set; } }
多线程群发邮件小例子
最新推荐文章于 2024-05-20 17:10:30 发布