我正在使用后台工作人员来处理文件的加载以阻止我的 ui 冻结但是似乎RunWorkerCompleted在我的DoWork事件完成之前完成(退出对话框时导致错误)......我有什么做错了吗? 我是否最好在一项任务中执行此操作?
public static <T> LoadDesign(string xmlPath)
{
    PleaseWait pw = new PleaseWait(xmlPath);
    pw.ShowDialog();
    return pw.design;
}
private PleaseWait(string xmlFile)
{
   InitializeComponent();
   bw = new BackgroundWorker();
   bw.WorkerSupportsCancellation = true;
   bw.DoWork += (s, e) =>
   {
      design = (Cast)DllCall containing XmlSerializer.Deserialize(...,xmlFile);
   };
   bw.RunWorkerCompleted += (s, e) => {
   //Exit please wait dialog
      this.Close(); 
   };
   if (!bw.IsBusy)
       bw.RunWorkerAsync();
}
我相信问题可能归结于我的后台工作人员正在调用 dll 而不是等待响应。我试图添加检查while(design == null)无济于事..
Edit2 错误是 NRE,因为设计尚未加载,我可以轻松解决此问题,但宁愿让线程工作。