Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo BackgroundWorker.ReportProgress (Int32)

 

Data di pubblicazione: ottobre 2016

Genera l'evento ProgressChanged.

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

public void ReportProgress(
	int percentProgress
)

Parametri

percentProgress
Type: System.Int32

La percentuale, da 0 a 100, dell'operazione in background che è stato completato.

Exception Condition
InvalidOperationException

La proprietà WorkerReportsProgress è impostata su false.

Se è necessario l'operazione in background per segnalare lo stato di avanzamento, è possibile chiamare il ReportProgress metodo per generare il ProgressChanged evento. Il WorkerReportsProgress valore della proprietà deve essere true, o ReportProgress genererà un InvalidOperationException.

È possibile implementare in modo corretto di misurare lo stato di avanzamento dell'operazione in background come percentuale dell'attività totale completata.

La chiamata al ReportProgress metodo è asincrono e restituisce immediatamente. Il ProgressChanged gestore eventi viene eseguito sul thread che ha creato il BackgroundWorker.

Esempio di codice riportato di seguito viene illustrato l'utilizzo di ReportProgress metodo per segnalare lo stato di avanzamento di un'operazione asincrona per l'utente. Questo esempio di codice fa parte di un esempio più esaustivo fornito per la BackgroundWorker classe.

// 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);
    }
}

Universal Windows Platform
Disponibile da 10
.NET Framework
Disponibile da 2.0
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Torna all'inizio
Mostra: