BackgroundWorker.ReportProgress Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Déclenche l’événement ProgressChanged.
Surcharges
ReportProgress(Int32) |
Déclenche l’événement ProgressChanged. |
ReportProgress(Int32, Object) |
Déclenche l’événement ProgressChanged. |
ReportProgress(Int32)
- Source:
- BackgroundWorker.cs
- Source:
- BackgroundWorker.cs
- Source:
- BackgroundWorker.cs
Déclenche l’événement ProgressChanged.
public:
void ReportProgress(int percentProgress);
public void ReportProgress (int percentProgress);
member this.ReportProgress : int -> unit
Public Sub ReportProgress (percentProgress As Integer)
Paramètres
- percentProgress
- Int32
Pourcentage, de 0 à 100, de l'opération d'arrière-plan qui est terminé.
Exceptions
La propriété WorkerReportsProgress est définie sur false
.
Exemples
L’exemple de code suivant illustre l’utilisation de la ReportProgress méthode pour signaler la progression d’une opération asynchrone à l’utilisateur. Cet exemple de code fait partie d’un exemple plus grand fourni pour la BackgroundWorker classe .
// 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
Remarques
Si vous avez besoin de l’opération en arrière-plan pour signaler sa progression, vous pouvez appeler la ReportProgress méthode pour déclencher l’événement ProgressChanged . La WorkerReportsProgress valeur de la propriété doit être true
, ou ReportProgress lève un InvalidOperationException.
C’est à vous d’implémenter un moyen significatif de mesurer la progression de votre opération en arrière-plan en tant que pourcentage de la tâche totale terminée.
L’appel à la ReportProgress méthode est asynchrone et retourne immédiatement. Le ProgressChanged gestionnaire d’événements s’exécute sur le thread qui a créé le BackgroundWorker.
Voir aussi
- Procédure : exécuter une opération en arrière-plan
- Procédure : télécharger un fichier en arrière-plan
S’applique à
ReportProgress(Int32, Object)
- Source:
- BackgroundWorker.cs
- Source:
- BackgroundWorker.cs
- Source:
- BackgroundWorker.cs
Déclenche l’événement ProgressChanged.
public:
void ReportProgress(int percentProgress, System::Object ^ userState);
public void ReportProgress (int percentProgress, object userState);
public void ReportProgress (int percentProgress, object? userState);
member this.ReportProgress : int * obj -> unit
Public Sub ReportProgress (percentProgress As Integer, userState As Object)
Paramètres
- percentProgress
- Int32
Pourcentage, de 0 à 100, de l'opération d'arrière-plan qui est terminé.
- userState
- Object
Object unique qui indique l'état d'utilisateur. Retourné en tant que propriété UserState de l’ProgressChangedEventArgs.
Exceptions
La propriété WorkerReportsProgress est définie sur false
.
Exemples
L’exemple de code suivant illustre l’utilisation de la ReportProgress méthode pour signaler la progression d’une opération asynchrone à l’utilisateur. Cet exemple de code fait partie d’un exemple plus grand fourni pour la ToolStripProgressBar classe .
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
// This method will run on a thread other than the UI thread.
// Be sure not to manipulate any Windows Forms controls created
// on the UI thread from this method.
backgroundWorker.ReportProgress(0, "Working...");
Decimal lastlast = 0;
Decimal last = 1;
Decimal current;
if (requestedCount >= 1)
{ AppendNumber(0); }
if (requestedCount >= 2)
{ AppendNumber(1); }
for (int i = 2; i < requestedCount; ++i)
{
// Calculate the number.
checked { current = lastlast + last; }
// Introduce some delay to simulate a more complicated calculation.
System.Threading.Thread.Sleep(100);
AppendNumber(current);
backgroundWorker.ReportProgress((100 * i) / requestedCount, "Working...");
// Get ready for the next iteration.
lastlast = last;
last = current;
}
backgroundWorker.ReportProgress(100, "Complete!");
}
Private Sub backgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs)
' This method will run on a thread other than the UI thread.
' Be sure not to manipulate any Windows Forms controls created
' on the UI thread from this method.
backgroundWorker.ReportProgress(0, "Working...")
Dim lastlast As [Decimal] = 0
Dim last As [Decimal] = 1
Dim current As [Decimal]
If requestedCount >= 1 Then
AppendNumber(0)
End If
If requestedCount >= 2 Then
AppendNumber(1)
End If
Dim i As Integer
While i < requestedCount
' Calculate the number.
current = lastlast + last
' Introduce some delay to simulate a more complicated calculation.
System.Threading.Thread.Sleep(100)
AppendNumber(current)
backgroundWorker.ReportProgress(100 * i / requestedCount, "Working...")
' Get ready for the next iteration.
lastlast = last
last = current
i += 1
End While
backgroundWorker.ReportProgress(100, "Complete!")
End Sub
Remarques
Si vous avez besoin de l’opération en arrière-plan pour signaler sa progression, vous pouvez appeler la ReportProgress méthode pour déclencher l’événement ProgressChanged . La WorkerReportsProgress valeur de la propriété doit true
, ou ReportProgress lève un InvalidOperationException.
C’est à vous d’implémenter un moyen significatif de mesurer la progression de votre opération en arrière-plan en tant que pourcentage de la tâche totale terminée.
Voir aussi
- Procédure : exécuter une opération en arrière-plan
- Procédure : télécharger un fichier en arrière-plan