Biblioteca de clases de .NET Framework
BackgroundWorker.CancelAsync (Método)

Nota: este método es nuevo en la versión 2.0 de .NET Framework.

Solicita la cancelación de una operación en segundo plano pendiente.

Espacio de nombres: System.ComponentModel
Ensamblado: System (en system.dll)

Sintaxis

Visual Basic (Declaración)
Public Sub CancelAsync
Visual Basic (Uso)
Dim instance As BackgroundWorker

instance.CancelAsync
C#
public void CancelAsync ()
C++
public:
void CancelAsync ()
J#
public void CancelAsync ()
JScript
public function CancelAsync ()
Excepciones

Tipo de excepciónCondición

InvalidOperationException

WorkerSupportsCancellation es false.

Comentarios

El método CancelAsync envía una solicitud para finalizar la operación en segundo plano pendiente y establece la propiedad CancellationPending en true.

Cuando se llama a CancelAsync, el método de trabajo tiene una oportunidad de detener la ejecución y salir. El código de trabajo debería comprobar periódicamente la propiedad CancellationPending para ver si se ha establecido en true.

Nota de precauciónPrecaución

Tenga en cuenta que el código del controlador de eventos DoWork puede finalizar su trabajo mientras se realiza una solicitud de cancelación y que el bucle de sondeo podría pasar por alto la propiedad CancellationPending que se haya establecido en true. En este caso, el indicador Cancelled del objeto System.ComponentModel.RunWorkerCompletedEventArgs del controlador de eventos RunWorkerCompleted no se establecerá en true aunque se haya realizado una solicitud de cancelación. Esta situación se denomina condición de anticipación y es un problema habitual en la programación con subprocesamiento múltiple. Para obtener más información sobre los problemas de diseño de subprocesamiento múltiple, vea Procedimientos recomendados para el subprocesamiento administrado.

Ejemplo

En el ejemplo de código siguiente se muestra el uso del método CancelAsync para cancelar una operación asincrónica ("en segundo plano"). Este ejemplo de código forma parte de un ejemplo más extenso referente a la clase BackgroundWorker.

Visual Basic
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 'cancelAsyncButton_Click
C#
private void cancelAsyncButton_Click(System.Object sender, 
    System.EventArgs e)
{   
    // Cancel the asynchronous operation.
    this.backgroundWorker1.CancelAsync();

    // Disable the Cancel button.
    cancelAsyncButton.Enabled = false;
}
C++
void cancelAsyncButton_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
{  
   // Cancel the asynchronous operation.
   this->backgroundWorker1->CancelAsync();
   
   // Disable the Cancel button.
   cancelAsyncButton->Enabled = false;
}
J#
private void cancelAsyncButton_Click(Object sender, System.EventArgs e)
{   
    // Cancel the asynchronous operation.
    this.backgroundWorker1.CancelAsync();

    // Disable the Cancel button.
    cancelAsyncButton.set_Enabled(false);
}
Plataformas

Windows 98, Windows 2000 SP4, Windows Millennium, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

Información de versión

.NET Framework

Compatible con: 2.0
Vea también

Etiquetas :


Page view tracker