我想做的是让我的代码获取电子邮件列表并将每个电子邮件提供给服务以异步验证其是否有效。
我使用的服务是 Cobisi .NET Email Verify允许您通过调用其基于任务的异步 API 来验证电子邮件是否对各种验证级别有效。
使用这篇博文 (http://www.hanselman.com/blog/BackToParallelBasicsDontBlockYourThreadsMakeAsyncIOWorkForYou.aspx) 我认为我的代码将异步验证我的电子邮件列表并返回一个 Task
这是我到目前为止的代码
异步电子邮件验证方法:
public async Task<bool> ValidateEmailCleanAsync(string email)
{
using (var _engine = new VerificationEngine())
{
var verification = new Verification(email);
await _engine.RunAsync(verification, VerificationLevel.CatchAll);
return verification.State.Result.LastStatus == VerificationStatus.Success; //returns true if validation is passed or false if not
}
}
任务工厂验证电子邮件:
Task.Factory.ContinueWhenAll(
(from email in cleanEmailList1 select ValidateEmailCleanAsync(email)).ToArray(),
completedTasks => { /* Create New String Collection For Clean Emails */ });
有没有办法在我的评论 block 中放置一些代码来构建一个新的干净电子邮件集合或将它们添加到预先构建的集合中?有没有更好的方法来完成我想做的事情?
请您参考如下方法:
重写 fork-join 以使用 await,一切再次变得简单:
var tasks =
(from email in cleanEmailList1 select ValidateEmailCleanAsync(email)).ToArray();
await Task.WhenAll(tasks);
ProcessTasks(tasks);
ProcessTasks 可以是您喜欢的任何内容。
