BackgroundWorker类
有异步处理需求的情况可以使用这个类。
注意确保在 DoWork 事件处理程序中不操作任何用户界面对象。
BackgroundWorker bgw = new BackgroundWorker();
bgw.WorkerSupportsCancellation = true;
//DoWork事件 调用 RunWorkerAsync 时发生
bgw.DoWork += Bgw_DoWork;
//RunWorkerCompleted 当后台操作已完成、被取消或引发异常时发生
bgw.RunWorkerCompleted += Bgw_RunWorkerCompleted;
//RunWorkerAsync 开始执行后台操作
//query传递到DoWork事件的DoWorkEventArgs.Argument,
//由于在这里只有一个参数可以传递,所以在实际应用往封装一个类
PacsQuery query = new PacsQuery();
query.StuId = "03";
bgw.RunWorkerAsync(query);
private void Bgw_DoWork(object sender, DoWorkEventArgs e)
{
//要实现的逻辑代码省略...
//这里可以使用e.Result返回请求结果
e.Result = "123456";
}
private void Bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//在这里可以接收到Bgw_DoWork中的结果 进行逻辑处理
if(e.Result ="123456")
{
}
else
{
}
}