BackgroundWorker.CancelAsync 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.
Meminta pembatalan operasi latar belakang yang tertunda.
public:
void CancelAsync();
public void CancelAsync ();
member this.CancelAsync : unit -> unit
Public Sub CancelAsync ()
Pengecualian
WorkerSupportsCancellationadalah false
.
Contoh
Contoh kode berikut menunjukkan penggunaan CancelAsync metode untuk membatalkan operasi asinkron ("latar belakang"). Contoh kode ini adalah bagian dari contoh yang lebih besar yang disediakan untuk BackgroundWorker kelas .
void cancelAsyncButton_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
// Cancel the asynchronous operation.
this->backgroundWorker1->CancelAsync();
// Disable the Cancel button.
cancelAsyncButton->Enabled = false;
}
private void cancelAsyncButton_Click(System.Object sender,
System.EventArgs e)
{
// Cancel the asynchronous operation.
this.backgroundWorker1.CancelAsync();
// Disable the Cancel button.
cancelAsyncButton.Enabled = false;
}
Private Sub cancelAsyncButton_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles cancelAsyncButton.Click
' Cancel the asynchronous operation.
Me.backgroundWorker1.CancelAsync()
' Disable the Cancel button.
cancelAsyncButton.Enabled = False
End Sub
Keterangan
CancelAsync mengirimkan permintaan untuk mengakhiri operasi latar belakang yang tertunda dan mengatur CancellationPending properti ke true
.
Ketika Anda memanggil CancelAsync, metode pekerja Anda memiliki kesempatan untuk menghentikan eksekusi dan keluar. Kode pekerja harus secara berkala memeriksa CancellationPending properti untuk melihat apakah telah diatur ke true
.
Perhatian
Ketahuilah bahwa kode Anda di DoWork penanganan aktivitas dapat menyelesaikan pekerjaannya karena permintaan pembatalan sedang dibuat, dan perulangan polling Anda mungkin melewatkan CancellationPending diatur ke true
. Dalam hal ini, Cancelled bendera System.ComponentModel.RunWorkerCompletedEventArgs di penanganan aktivitas Anda RunWorkerCompleted tidak akan diatur ke true
, meskipun permintaan pembatalan dibuat. Situasi ini disebut kondisi balapan dan menjadi perhatian umum dalam pemrograman multithreaded. Untuk informasi selengkapnya tentang masalah desain multithreading, lihat Praktik Terbaik Utas Terkelola.