BackgroundWorker是用于在后台执行耗时操作的组件,而ShowDialog()是用于显示模态对话框的方法。下面是一个示例代码,展示如何使用BackgroundWorker来在后台执行耗时操作,并在操作完成后使用ShowDialog()来显示一个模态对话框。
using System;
using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;
namespace BackgroundWorkerExample
{
public partial class MainForm : Form
{
private BackgroundWorker backgroundWorker;
private ProgressDialog progressDialog;
public MainForm()
{
InitializeComponent();
backgroundWorker = new BackgroundWorker();
backgroundWorker.DoWork += BackgroundWorker_DoWork;
backgroundWorker.RunWorkerCompleted += BackgroundWorker_RunWorkerCompleted;
}
private void btnStart_Click(object sender, EventArgs e)
{
// 在点击按钮时启动后台操作
backgroundWorker.RunWorkerAsync();
}
private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
// 模拟耗时操作
for (int i = 0; i < 10; i++)
{
Thread.Sleep(1000);
backgroundWorker.ReportProgress(i * 10);
}
}
private void BackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// 后台操作完成后显示模态对话框
progressDialog = new ProgressDialog();
progressDialog.ShowDialog();
}
private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
// 更新进度条
progressBar.Value = e.ProgressPercentage;
}
}
public partial class ProgressDialog : Form
{
public ProgressDialog()
{
InitializeComponent();
}
}
}
上面的示例代码中,MainForm是一个Windows窗体应用程序的主窗体,其中包含一个按钮(btnStart)和一个进度条(progressBar)。当点击按钮时,BackgroundWorker会在后台执行耗时操作,并通过ReportProgress方法报告进度。在耗时操作完成后,BackgroundWorker会触发RunWorkerCompleted事件,在事件处理程序中实例化并显示一个模态对话框ProgressDialog。
ProgressDialog是一个简单的继承自Form的对话框窗体,用于显示进度信息。
请注意,此示例仅用于演示目的,并没有实际的耗时操作。在实际应用中,您需要将耗时操作的代码放在BackgroundWorker_DoWork事件处理程序中,以便在后台执行。