Penanganan Email Asinkron dengan Klien POP3

Operasi Asinkron dengan Pop3Client

Bekerja dengan pesan juga dapat dilakukan secara asinkron menggunakan Aspose.Email Pop3Client. Artikel ini menunjukkan cara mengambil pesan dari kotak surat secara asinkron. Juga menunjukkan cara mendaftarkan pesan dengan memberikan kriteria pencarian menggunakan MailQuery. Akan ditampilkan secara terpisah cara menginterupsi operasi dengan kotak surat yang dimulai oleh pola asinkron berbasis tugas (TAP) metode.

Mengambil Pesan Secara Asinkron

Potongan kode berikut menunjukkan cara mengambil pesan secara asinkron.

Daftar Pesan secara Asinkron dengan MailQuery

The MailQuery kelas dapat digunakan untuk menentukan kriteria pencarian untuk mengambil daftar pesan secara asinkron seperti yang ditunjukkan dalam contoh kode berikut.

Menginterupsi Metode TAP

Mulai dari .NET Framework 4.5, Anda dapat menggunakan metode asinkron yang diimplementasikan sesuai model TAP. Potongan kode di bawah ini menunjukkan cara menerima informasi tentang kotak surat menggunakan metode pola asinkron berbasis tugas yang bernama GetMailboxInfoAsync dan kemudian menginterupsi proses ini setelah beberapa saat.

// 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);
}