Что бы я хотел сделать, так это то, что мой код принимает список писем и передает их в службу, которая будет проверяться как действительная асинхронно.Очистка электронной почты async с использованием Task.Factory
Служба, которую я использую, это Cobisi .NET Email Verify, которая позволяет проверять электронную почту как действительную для различных уровней проверки, вызывая их асинхронный API на основе задач.
С помощью этого блога (http://www.hanselman.com/blog/BackToParallelBasicsDontBlockYourThreadsMakeAsyncIOWorkForYou.aspx) Я думаю, что мой код будет асинхронно проверить мой список сообщений электронной почты и возвращает массив Task < BOOL> представляющие электронные сообщения, которые прошли проверку, однако я не уверен, как использовать этот массив в Task.Factory.ContinueWhenAll(), чтобы вернуть коллекцию чистых писем.
Вот мой код до сих пор
Асинхронный Email Validation Метод:
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 для проверки сообщений электронной почты:
Task.Factory.ContinueWhenAll(
(from email in cleanEmailList1 select ValidateEmailCleanAsync(email)).ToArray(),
completedTasks => { /* Create New String Collection For Clean Emails */ });
Есть ли способ введите код, где мой блок комментариев либо создать новую коллекцию чистых писем или добавить их в предварительно собранную коллекцию? Есть ли лучший способ добиться того, что я пытаюсь сделать?
Спасибо за отличный ответ. К сожалению, теперь, когда «ждут _engine.RunAsync (проверка, VerificationLevel.CatchAll); line работает, как представляется, просто обрабатывается навсегда, даже не возвращаясь к отладчику. Хотя я предполагаю, что это больше проблема с моим использованием программного обеспечения Colbisi, чем попытка параллельного выполнения этих задач. –
Либо это то, что мы назовем Wait или Result где-то, что вызывает классический тупик ASP.NET. – usr
Это может быть так, я буду искать экземпляры, где я, возможно, сделал это в разделе «ProcessTasks». Еще раз спасибо. –