MSDN 原文描述:
许多经常执行的操作可能需要很长的执行时间。例如:
-
图像下载
-
Web 服务调用
-
文件下载和上载(包括点对点应用程序)
-
复杂的本地计算
-
数据库事务
-
本地磁盘访问(相对于内存访问来说其速度很慢)
类似这样的操作可能导致用户界面在操作运行时挂起。如果您需要用户界面的响应却遇到与此类操作关联的长时间延迟,BackgroundWorker 组件可以提供一种方便的解决方案。
使用 RunWorkerCompleted 事件(可选择包含操作结果)向调用线程发出警报。
“组件”选项卡的“工具箱”中提供了 “属性”窗口中。
若要启动异步操作,请使用 DoWork 事件处理程序附加到该事件。
如何:实现使用后台操作的窗体 中一个较大的示例。
#region CODE
public partial class Form1 : Form
{
BackgroundWorker worker = null;
public Form1()
{
InitializeComponent();
}
private void simpleButton1_Click(object sender, EventArgs e)
{
worker = new BackgroundWorker();
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
worker.RunWorkerAsync();
}
void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if ((bool)e.Result)
{
this.lbres.Text = "Process complate";
}
else
{
this.lbres.Text = "Process Error..";
}
}
bool isfirst = true;
void worker_DoWork(object sender, DoWorkEventArgs e)
{
try
{
System.Threading.Thread.Sleep(2000);
}
catch
{
e.Result = false;
}
}
}
#endregion