Asynchrone e‑mailafhandeling met POP3‑client

Asynchrone bewerkingen met Pop3Client

Werken met berichten kan ook asynchroon worden uitgevoerd met behulp van Aspose.Email Pop3Client. Dit artikel toont hoe u berichten asynchroon uit een mailbox kunt ophalen. Het laat ook zien hoe u berichten kunt weergeven door zoekcriteria te geven met behulp van MailQuery. Het zal apart worden getoond hoe u een bewerking met een mailbox kunt onderbreken die is gestart met een taakgebaseerd asynchroon patroon (TAP) methode.

Berichten Asynchroon Ophalen

Het onderstaande codefragment toont hoe u berichten asynchroon kunt ophalen.

Berichten asynchroon weergeven met MailQuery

De MailQuery klasse kan worden gebruikt om zoekcriteria op te geven voor het asynchroon ophalen van een berichtenlijst, zoals getoond in het volgende codevoorbeeld.

Een TAP‑methode onderbreken

Vanaf .NET Framework 4.5 kun je asynchrone methoden gebruiken die volgens het TAP‑model zijn geïmplementeerd. De code‑fragment hieronder laat zien hoe je informatie over een mailbox kunt ontvangen met behulp van de task‑gebaseerde asynchrone patroonmethode genaamd GetMailboxInfoAsync en onderbreek dit proces daarna een tijdje.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET

using (Pop3Client client = new Pop3Client(host, 995, senderEmail, password, SecurityOptions.Auto))
{
    CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
    AutoResetEvent autoResetEvent = new AutoResetEvent(false);
    Exception exception = null;

    ThreadPool.QueueUserWorkItem(delegate
    {
        try
        {
            // start receiving mailbox information
            var task = client.GetMailboxInfoAsync(cancellationTokenSource.Token);
            Pop3MailboxInfo mailboxInfo = task.GetAwaiter().GetResult();
            Console.WriteLine("Message count: " + mailboxInfo.MessageCount);
        }
        catch (Exception e)
        {
            exception = e;
        }
        finally
        {
            autoResetEvent.Set();
        }
    });

    Thread.Sleep(2000);

    // stop receiving mailbox information
    cancellationTokenSource.Cancel();
    autoResetEvent.WaitOne();

    if (exception is OperationCanceledException)
        Console.WriteLine("Operation has been interrupted: " + exception.Message);
}