AsyncOperation.PostOperationCompleted(SendOrPostCallback, Object) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengakhiri masa pakai operasi asinkron.
public:
void PostOperationCompleted(System::Threading::SendOrPostCallback ^ d, System::Object ^ arg);
public void PostOperationCompleted (System.Threading.SendOrPostCallback d, object arg);
public void PostOperationCompleted (System.Threading.SendOrPostCallback d, object? arg);
member this.PostOperationCompleted : System.Threading.SendOrPostCallback * obj -> unit
Public Sub PostOperationCompleted (d As SendOrPostCallback, arg As Object)
Parameter
Objek SendOrPostCallback yang membungkus delegasi untuk dipanggil ketika operasi berakhir.
- arg
- Object
Argumen untuk delegasi yang terkandung dalam d
parameter .
Pengecualian
OperationCompleted() telah dipanggil sebelumnya untuk tugas ini.
d
adalah null
.
Contoh
Contoh kode berikut menunjukkan menggunakan PostOperationCompleted metode untuk mengakhiri masa pakai operasi asinkron. Contoh kode ini adalah bagian dari contoh yang lebih besar yang disediakan untuk System.ComponentModel.AsyncOperationManager kelas .
// This method cancels a pending asynchronous operation.
public void CancelAsync(object taskId)
{
AsyncOperation asyncOp = userStateToLifetime[taskId] as AsyncOperation;
if (asyncOp != null)
{
lock (userStateToLifetime.SyncRoot)
{
userStateToLifetime.Remove(taskId);
}
}
}
' This method cancels a pending asynchronous operation.
Public Sub CancelAsync(ByVal taskId As Object)
Dim obj As Object = userStateToLifetime(taskId)
If (obj IsNot Nothing) Then
SyncLock userStateToLifetime.SyncRoot
userStateToLifetime.Remove(taskId)
End SyncLock
End If
End Sub
Keterangan
PostOperationCompleted Panggil metode untuk mengakhiri masa pakai operasi asinkron. Setelah metode ini dipanggil untuk tugas tertentu, panggilan ke objek yang AsyncOperation sesuai akan menimbulkan pengecualian.
Parameter d
membungkus delegasi yang Anda inginkan untuk dipanggil kelas Anda ketika masa pakai tugas berakhir karena penyelesaian, pembatalan, atau kegagalan tugas. Objek AsyncOperation akan memastikan bahwa delegasi Anda dipanggil pada utas atau konteks yang sesuai untuk model aplikasi. Delegasi Anda dapat secara opsional menaikkan peristiwa yang memberi tahu klien bahwa masa pakai tugas asinkron telah berakhir.
Parameter arg
digunakan untuk meneruskan informasi status ke delegasi d
penyelesaian . Anda dapat menggunakan AsyncOperation objek, atau System.ComponentModel.AsyncCompletedEventArgs objek sebagai nilai parameter. Atau, jika Anda ingin menyediakan penyimpanan status tambahan, Anda dapat menggunakan instans kelas yang Anda dapatkan dari System.ComponentModel.AsyncCompletedEventArgs kelas .
Catatan Bagi Inheritor
Pewaris harus membuat PostOperationCompleted(SendOrPostCallback, Object) pemanggilan asinkron, sehingga penyedia pustaka kelas tidak perlu khawatir dengan potensi luapan tumpukan jika mereka mengasumsikan asinkron tetapi model aplikasi tertentu kebetulan sinkron. Metode harus ditafsirkan sebagai panggilan "mengakhiri masa pakai", yang berarti implementasi perlu melakukan apa yang sesuai untuk model aplikasi. Misalnya, ASP.NET akan mengurangi jumlah operasi asinkron yang luar biasa. Ini juga harus menempatkan operasi ke dalam keadaan sewaktu-waktu sehingga setiap panggilan berikutnya ke dalamnya akan gagal, karena sekarang telah selesai.
Untuk informasi selengkapnya tentang menerapkan kelas asinkron, lihat Menerapkan Pola Asinkron berbasis Peristiwa.