Bagikan melalui


Pola pemrograman asinkron

.NET menyediakan tiga pola untuk melakukan operasi asinkron:

  • Pola Asinkron Berbasis Tugas (TAP), yang menggunakan satu metode untuk mewakili inisiasi dan penyelesaian operasi asinkron. TAP diperkenalkan dalam .NET Framework 4. Ini adalah pendekatan yang direkomendasikan untuk pemrograman asinkron di .NET. Asinkron dan menunggu kata kunci di C# dan operator Asinkron dan Tunggu di Visual Basic menambahkan dukungan bahasa untuk TAP. Untuk informasi selengkapnya, lihat Pola Asinkron berbasis tugas (TAP).

  • Pola Asinkron Berbasis Peristiwa (EAP), yang merupakan model warisan berbasis peristiwa untuk memberikan perilaku asinkron. Ini memerlukan metode yang memiliki akhiran Async dan satu atau beberapa acara, jenis delegasi penanganan acara, dan jenis turunan EventArg. EAP diperkenalkan dalam .NET Framework 2.0. Ini tidak lagi direkomendasikan untuk pengembangan baru. Untuk informasi selengkapnya, lihat Pola Asinkron Berbasis Peristiwa (EAP).

  • Pola Model Pemrograman Asinkron (APM) ( juga disebut IAsyncResult pola), yang merupakan model warisan yang menggunakan IAsyncResult antarmuka untuk memberikan perilaku asinkron. Dalam pola ini, operasi asinkron memerlukan Begin metode dan End (misalnya, BeginWrite dan EndWrite untuk menerapkan operasi penulisan asinkron). Pola ini tidak lagi direkomendasikan untuk pengembangan baru. Untuk informasi selengkapnya, lihat Model Pemrograman Asinkron (APM).

Perbandingan pola

Untuk perbandingan cepat tentang bagaimana tiga pola memodelkan operasi asinkron, pertimbangkan Read metode yang membaca jumlah data tertentu ke dalam buffer yang disediakan mulai dari offset tertentu:

public class MyClass  
{  
    public int Read(byte [] buffer, int offset, int count);  
}  

Padanan TAP dari metode ini akan mengekspos metode tunggal ReadAsync berikut:

public class MyClass  
{  
    public Task<int> ReadAsync(byte [] buffer, int offset, int count);  
}  

Mitra EAP akan mengekspos sekumpulan jenis dan anggota berikut:

public class MyClass  
{  
    public void ReadAsync(byte [] buffer, int offset, int count);  
    public event ReadCompletedEventHandler ReadCompleted;  
}  

Rekan APM akan mengekspos metode BeginRead dan EndRead.

public class MyClass  
{  
    public IAsyncResult BeginRead(  
        byte [] buffer, int offset, int count,
        AsyncCallback callback, object state);  
    public int EndRead(IAsyncResult asyncResult);  
}  

Lihat juga