Bagikan melalui


AsyncOperation.PostOperationCompleted(SendOrPostCallback, Object) Metode

Definisi

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

d
SendOrPostCallback

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.

dadalah 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 dpenyelesaian . 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.

Berlaku untuk

Lihat juga