BackgroundWorker.CancelAsync Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bekleyen bir arka plan işleminin iptalini istemektedir.
public:
void CancelAsync();
public void CancelAsync ();
member this.CancelAsync : unit -> unit
Public Sub CancelAsync ()
Özel durumlar
WorkerSupportsCancellation, false
değeridir.
Örnekler
Aşağıdaki kod örneği, zaman uyumsuz ("arka plan") işlemini iptal etmek için yönteminin kullanımını CancelAsync gösterir. Bu kod örneği, sınıfı için BackgroundWorker sağlanan daha büyük bir örneğin parçasıdır.
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
Açıklamalar
CancelAsyncbekleyen arka plan işlemini sonlandırmak için bir istek gönderir ve özelliğini olarak true
ayarlarCancellationPending.
çağırdığınızda CancelAsync, çalışan yönteminizin yürütmesini ve çıkışını durdurma fırsatı vardır. Çalışan kodu, özelliğinin CancellationPending olarak ayarlandığını true
görmek için özelliği düzenli aralıklarla denetlemelidir.
Dikkat
Olay işleyicisindeki kodunuzun DoWork iptal isteği yapılırken çalışmasını bitirebileceğini ve yoklama döngünüzün olarak ayarlanmasını true
kaçırabileceğini CancellationPending unutmayın. Bu durumda, Cancelled bir iptal isteği yapılmış olsa bile olay işleyicinizdeki RunWorkerCompleted bayrağı System.ComponentModel.RunWorkerCompletedEventArgs olarak ayarlanmaztrue
. Bu durum yarış durumu olarak adlandırılır ve çok iş parçacıklı programlamada yaygın bir sorundur. Çok iş parçacıklı tasarım sorunları hakkında daha fazla bilgi için bkz. Yönetilen İş Parçacığı Oluşturma En İyi Yöntemleri.