BackgroundWorker.ReportProgress Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Löst das ProgressChanged-Ereignis aus.
Überlädt
| Name | Beschreibung |
|---|---|
| ReportProgress(Int32) |
Löst das ProgressChanged-Ereignis aus. |
| ReportProgress(Int32, Object) |
Löst das ProgressChanged-Ereignis aus. |
ReportProgress(Int32)
- Quelle:
- BackgroundWorker.cs
- Quelle:
- BackgroundWorker.cs
- Quelle:
- BackgroundWorker.cs
- Quelle:
- BackgroundWorker.cs
- Quelle:
- BackgroundWorker.cs
Löst das ProgressChanged-Ereignis aus.
public:
void ReportProgress(int percentProgress);
public void ReportProgress(int percentProgress);
member this.ReportProgress : int -> unit
Public Sub ReportProgress (percentProgress As Integer)
Parameter
- percentProgress
- Int32
Der Prozentsatz des abgeschlossenen Hintergrundvorgangs von 0 bis 100.
Ausnahmen
Die WorkerReportsProgress-Eigenschaft ist auf false gesetzt.
Beispiele
Im folgenden Codebeispiel wird die Verwendung der ReportProgress Methode veranschaulicht, um den Fortschritt eines asynchronen Vorgangs dem Benutzer zu melden. Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die BackgroundWorker Klasse bereitgestellt wird.
// 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
{
result = n < 2
? 1
: ComputeFibonacci(n - 1, worker, e) +
ComputeFibonacci(n - 2, worker, e);
// Report progress as a percentage of the total task.
int percentComplete =
(int)(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
Hinweise
Wenn Sie den Hintergrundvorgang benötigen, um den Fortschritt zu melden, können Sie die ReportProgress Methode aufrufen, um das ProgressChanged Ereignis auszuheben. Der WorkerReportsProgress Eigenschaftswert muss sein trueoder ReportProgress löst einen InvalidOperationException.
Es liegt an Ihnen, einen sinnvollen Weg zur Messung des Fortschritts Ihrer Hintergrundoperation als Prozentsatz der abgeschlossenen Gesamtaufgabe zu implementieren.
Der Aufruf der ReportProgress Methode ist asynchron und gibt sofort zurück. Der ProgressChanged Ereignishandler wird für den Thread ausgeführt, der die BackgroundWorkerDatei erstellt hat.
Weitere Informationen
- So führen Sie einen Vorgang im Hintergrund aus
- Vorgehensweise: Herunterladen einer Datei im Hintergrund
Gilt für:
ReportProgress(Int32, Object)
- Quelle:
- BackgroundWorker.cs
- Quelle:
- BackgroundWorker.cs
- Quelle:
- BackgroundWorker.cs
- Quelle:
- BackgroundWorker.cs
- Quelle:
- BackgroundWorker.cs
Löst das ProgressChanged-Ereignis aus.
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)
Parameter
- percentProgress
- Int32
Der Prozentsatz des abgeschlossenen Hintergrundvorgangs von 0 bis 100.
- userState
- Object
Ein eindeutiger Object Wert, der den Benutzerstatus angibt. Wird als UserState Eigenschaft der .ProgressChangedEventArgs
Ausnahmen
Die WorkerReportsProgress-Eigenschaft ist auf false gesetzt.
Beispiele
Im folgenden Codebeispiel wird die Verwendung der ReportProgress Methode veranschaulicht, um den Fortschritt eines asynchronen Vorgangs dem Benutzer zu melden. Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die ToolStripProgressBar Klasse bereitgestellt wird.
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
Hinweise
Wenn Sie den Hintergrundvorgang benötigen, um den Fortschritt zu melden, können Sie die ReportProgress Methode aufrufen, um das ProgressChanged Ereignis auszuheben. Der WorkerReportsProgress Eigenschaftswert muss trueoder ReportProgress löst einen InvalidOperationException.
Es liegt an Ihnen, einen sinnvollen Weg zur Messung des Fortschritts Ihrer Hintergrundoperation als Prozentsatz der abgeschlossenen Gesamtaufgabe zu implementieren.
Weitere Informationen
- So führen Sie einen Vorgang im Hintergrund aus
- Vorgehensweise: Herunterladen einer Datei im Hintergrund