Gestione Asincrona delle Email con Client POP3
Operazioni asincrone con Pop3Client
Lavorare con i messaggi può anche essere eseguito in modo asincrono usando Aspose.Email Pop3Client. Questo articolo mostra come recuperare i messaggi da una casella in modo asincrono. Mostra anche come elencare i messaggi fornendo criteri di ricerca usando MailQuery. Verrà mostrato separatamente come interrompere un’operazione con una casella di posta avviata da un modello asincrono basato su task (TAP) metodo.
Recupera Messaggi in Modo Asincrono
Il seguente frammento di codice mostra come recuperare i messaggi in modo asincrono.
Elenca i messaggi in modo asincrono con MailQuery
Il MailQuery la classe può essere usata per specificare criteri di ricerca per recuperare una lista di messaggi in modo asincrono, come mostrato nel seguente esempio di codice.
Interruzione di un metodo TAP
A partire da .NET Framework 4.5, è possibile utilizzare metodi asincroni implementati secondo il modello TAP. Lo snippet di codice seguente mostra come ricevere informazioni su una casella di posta utilizzando il metodo basato sul modello asincrono denominato GetMailboxInfoAsync e poi interrompere questo processo dopo un po'.
// 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);
}