BackgroundWorker.CancellationPending BackgroundWorker.CancellationPending BackgroundWorker.CancellationPending BackgroundWorker.CancellationPending Property

定義

アプリケーションがバックグラウンド操作のキャンセルを要求したかどうかを示す値を取得します。Gets a value indicating whether the application has requested cancellation of a background operation.

public:
 property bool CancellationPending { bool get(); };
[System.ComponentModel.Browsable(false)]
public bool CancellationPending { get; }
member this.CancellationPending : bool
Public ReadOnly Property CancellationPending As Boolean

プロパティ値

アプリケーションがバックグラウンド操作のキャンセルを要求した場合は true。それ以外の場合は falsetrue if the application has requested cancellation of a background operation; otherwise, false. 既定値は、false です。The default is false.

次のコード例は、の使用を示します、CancellationPendingプロパティ クエリをBackgroundWorkerのキャンセル状態に関するします。The following code example demonstrates the use of the CancellationPending property to query a BackgroundWorker about its cancellation state. このコード例が示されている例の一部、BackgroundWorkerクラス。This code example is part of a larger example provided for the BackgroundWorker class.

// 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->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 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 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 Then
    e.Cancel = True
Else
    If n < 2 Then
        result = 1
    Else
        result = ComputeFibonacci(n - 1, worker, e) + _
                 ComputeFibonacci(n - 2, worker, e)
    End If

    ' Report progress as a percentage of the total task.
    Dim percentComplete As Integer = _
        CSng(n) / CSng(numberToCompute) * 100
    If percentComplete > highestPercentageReached Then
        highestPercentageReached = percentComplete
        worker.ReportProgress(percentComplete)
    End If

End If

注釈

場合CancellationPendingtrueCancelAsyncでメソッドが呼び出された、BackgroundWorkerします。If CancellationPending is true, then the CancelAsync method has been called on the BackgroundWorker.

このプロパティは、定期的に確認する必要がありますワーカー スレッドが使用するためものCancellationPendingに設定されているときに、バック グラウンド操作を中止し、trueします。This property is meant for use by the worker thread, which should periodically check CancellationPending and abort the background operation when it is set to true.

適用対象

こちらもご覧ください