大家好,本人已经了解了在WinForm中处理多线程情况的基本
在应用程序的主线程中,只需启动
BackgroundWorker
使用方法。代码结构如下:在应用程序的主线程中,只需启动
BackgroundWork
即可。 if (backgroundWorker1.IsBusy != true)
{
// Start the asynchronous operation.
backgroundWorker1.RunWorkerAsync();
}
然后它会触发DoWork
事件。因此我们可以在其中执行一些操作。
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
......
// report progress.
worker.ReportProgress(iProgress);
....
}
然后我们只需要处理 ProgressChanged
事件来显示 BackgroundWorker 的进度。
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
//show progress.
resultLabel.Text = (e.ProgressPercentage.ToString() + "%");
}
在DoWork方法完成或发生异常后,会触发RunWorkerCompleted事件。
以下是我对此事件处理程序的问题,请帮忙检查。谢谢。
我注意到在RunWorkerCompletedEventArgs e中有一个名为“Result”的属性,它有什么用途?我该如何使用它?
是否有可能接收到我的自定义异常消息而不是e.error?如果有,怎样才能实现呢?
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();
}
}