我需要在后台工程中运行一个耗时的过程,并且在那个过程中我也需要打开一个窗体。所有的工作都很好,但是当我在这个过程中调用一个UI时,它不允许我在新窗口中工作,它只是显示等待,当我取消BackgroundWorker过程时,它不会取消,尽管我启用了workersupportcancel。这里是我的代码如何在c backgroundworker中打开另一个窗体窗体#
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
runCheck();
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error != null)
{
MessageBox.Show(e.Error.Message);
}
}
private void newBtncheck_Click(object sender, RibbonControlEventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
private void newBtncheck_Click(object sender, RibbonControlEventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
private void btnStop_Click(object sender, RibbonControlEventArgs e)
{
this.backgroundWorker1.CancelAsync();
}
你看这个问题? http://stackoverflow.com/questions/1111369/how-do-i-create-and-show-wpf-windows-on-separate-threads –
@BillBerry我看到了,但它对我没有好处。我需要在同一个线程中打开另一个窗口。我使用基本的线程,但它不工作,然后我使用backgroundworker,它也创建问题 –