Alles, ich kannte bereits die grundlegende Verwendung der BackgroundWorker
um mehrere Thread-Fall in der WinForm zu behandeln. Und die Codestruktur sieht wie folgt aus.Wie verwendet man das BackgroundWorker-Ereignis RunWorkerCompleted
Im Hauptthread der Anwendung. starte einfach den BackgroundWork.
if (backgroundWorker1.IsBusy != true)
{
// Start the asynchronous operation.
backgroundWorker1.RunWorkerAsync();
}
Dann würde das Ereignis DoWork
ausgelöst werden. Wir können also etwas tun.
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
......
// report progress.
worker.ReportProgress(iProgress);
....
}
Dann brauchen wir nur das ProgressChanged
Ereignis zu behandeln, den Background Fortschritt zu zeigen.
Nach DoWork
fertig oder eine Ausnahme passiert ist. das Ereignis RunWorkerCompleted
würde ausgelöst werden.
Hier kommt meine Fragen zu diesem Ereignis behandeln. Bitte helfen Sie sie zu überprüfen. Vielen Dank.
Ich bemerkte, dass es eine Eigenschaft mit dem Namen 'Ergebnis' in der RunWorkerCompletedEventArgs e
, Wofür verwendet es? Wie kann ich es benutzen?
Gibt es eine Möglichkeit, meine benutzerdefinierte Ausnahmebedingungsnachricht anstelle der e.error
zu erhalten? Wenn es gibt, wie man es macht?
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Cancelled == true)
{
resultLabel.Text = "Canceled!";
}
else if (e.Error != null)
{
resultLabel.Text = "Error: " + e.Error.Message;
}
else
{
resultLabel.Text = e.Result.ToString();
}
}
Was ist 'Error'? Das hat auch das OP gefordert. –
Aktualisierte Antwort. Vielen Dank. (Lesen am Telefon und verpasste es) – SimonGoldstone