C# BackgroundWorker 异步操作

发布时间:2009年07月02日      浏览次数:621 次
//在任何函数或Form_Load()中都可使用this.yibu.RunWorkerAsync(); 进行启动异步操作
///////////////////////////////////////////////////////////////////////////
// 以下是异步操作的窗体代码,也可以直接在窗体中使用BackgroundWorker 进行创建
///////////////////////////////////////////////////////////////////////////
private System.ComponentModel.BackgroundWorker yibu;
#region Windows 窗体设计器生成的代码
private void InitializeComponent()
{
this.yibu.DoWork += new System.ComponentModel.DoWorkEventHandler(this.yibu_DoWork);
this.yibu.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.yibu_RunWorkerCompleted);
this.yibu.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.yibu_ProgressChanged);
}
#endregion
///////////////////////////////////////////////////////////////////////////
// 以下是异步操作的相关代码
///////////////////////////////////////////////////////////////////////////
#region 异步操作数据
//异步操作
private void yibu_DoWork(object sender, DoWorkEventArgs e)
{
//在本函数内不可操作Form窗体等动作
try
{
e.Result = this.yibu_chk_main(this.yibu, e); //在此调用主要处理函数
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
}
//主要处理函数
private string yibu_chk_main(BackgroundWorker worker, DoWorkEventArgs e)
{
//在本函数内不可操作Form窗体等动作
//在此操作你要处理的动作
return "";
}
//处理过程中的相关操作
private void yibu_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
//在此操作在异步处理过程中想做的事情
}
//处理完毕后的相关操作
private void yibu_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//try
//{
// if (this.yibu.IsBusy)
// {
// this.yibu.CancelAsync(); //停止并挂起异步操作
// }
//}
//catch { }
this.yibu.Dispose(); //释放异步操作的资源
//当异步处理完毕后,在此操作你想做的事情
//使用e.Result,可得到“主要处理函数”中所返回的值,如果需要更多的处理结果,可使用全局变量
}
#endregion
文章来源:桂林唯创网络
免责声明:本站相关技术文章信息部分来自网络,目的主要是传播更多信息,如果您认为本站的某些信息侵犯了您的版权,请与我们联系,我们会即时妥善的处理,谢谢合作!