我正在使用後臺工作來處理加載文件以阻止我的UI凍結,但看起來RunWorkerCompleted
在我的DoWork
事件完成之前完成(退出對話框時導致錯誤)。有什麼我做錯了嗎?我最好在任務上做這件事嗎?BackgroundWorker在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的設計還沒有被加載,我可以很容易地解決這個問題,但更希望得到的,而不是穿線工作。
如果您想要答案,請提供有關核心代碼的完整詳細信息。這個'(cast)DllCall'太僞代碼了。 –
@HenkHolterman - 我已經添加了這個方法,但是我看不到它有多相關? (也正在添加'使用dll') – Sayse
你看到了什麼錯誤? – YK1