Esporta (0) Stampa
Espandi tutto

Proprietà BackgroundWorker.CancellationPending

Aggiornamento: novembre 2007

Ottiene un valore che indica se l'applicazione ha richiesto l'annullamento di un'operazione in background.

Spazio dei nomi:  System.ComponentModel
Assembly:  System (in System.dll)

[BrowsableAttribute(false)]
public bool CancellationPending { get; }
/** @property */
/** @attribute BrowsableAttribute(false) */
public boolean get_CancellationPending()

public function get CancellationPending () : boolean

Valore proprietà

Tipo: System.Boolean

true se l'applicazione ha richiesto l'annullamento di un operazione in background; in caso contrario, false. Il valore predefinito è false.

Se la proprietà CancellationPending è true, è stato chiamato il metodo CancelAsync sull'oggetto BackgroundWorker.

La proprietà è progettata per essere utilizzata dal thread di lavoro, che deve periodicamente verificare la proprietà CancellationPending e interrompere l'operazione in background quando essa è impostata su true.

Nell'esempio di codice seguente viene illustrato l'utilizzo della proprietà CancellationPending per eseguire una query su una classe BackgroundWorker in relazione al suo stato di annullamento. Questo esempio di codice fa parte di un esempio più esaustivo fornito per la classe BackgroundWorker.

// Abort the operation if the user has canceled.
// Note that a call to CancelAsync may have set 
// CancellationPending to true just after the
// last invocation of this method exits, so this 
// code will not have the opportunity to set the 
// DoWorkEventArgs.Cancel flag to true. This means
// that RunWorkerCompletedEventArgs.Cancelled will
// not be set to true in your RunWorkerCompleted
// event handler. This is a race condition.

if (worker.CancellationPending)
{   
    e.Cancel = true;
}
else
{   
    if (n < 2)
    {   
        result = 1;
    }
    else
    {   
        result = ComputeFibonacci(n - 1, worker, e) + 
                 ComputeFibonacci(n - 2, worker, e);
    }

    // Report progress as a percentage of the total task.
    int percentComplete = 
        (int)((float)n / (float)numberToCompute * 100);
    if (percentComplete > highestPercentageReached)
    {
        highestPercentageReached = percentComplete;
        worker.ReportProgress(percentComplete);
    }
}


// Abort the operation if the user has cancelled.
// Note that a call to CancelAsync may have set 
// CancellationPending to true just after the
// last invocation of this method exits, so this 
// code will not have the opportunity to set the 
// DoWorkEventArgs.Cancel flag to true. This means
// that RunWorkerCompletedEventArgs.Cancelled will
// not be set to true in your RunWorkerCompleted
// event handler. This is a race condition.
if (worker.get_CancellationPending()) {

    e.set_Cancel(true);
}
else {

    if (n < 2) {

        result = 1;
    }
    else {

        result = ComputeFibonacci(n - 1, worker, e) 
            + ComputeFibonacci(n - 2, worker, e);
    }

    // Report progress as a percentage of the total task.
    int percentComplete=(int)((float)(n)/(float)(numberToCompute)* 100);

    if (percentComplete > highestPercentageReached) {            
        highestPercentageReached = percentComplete;
        worker.ReportProgress(percentComplete);
    }
}


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

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0, 2.0

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft