Window.Show()不显示控件,但Window.ShowDialog()做2

我已经这样做了Window.Show()不显示控件,但Window.ShowDialog()的确可以解决问题。 但是,我仍然有同样的问题。 我如何修改下面的代码来解决这个问题?

TimeWindow aTimeWindow = new TimeWindow(); BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += ((o, ea) => { // Highly time consumable task _resetEvent.Set(); }); aTimeWindow.Show(); bw.RunWorkerAsync(); _resetEvent.WaitOne(); aTimeWindow.Close(); 

_resetEvent是一个类的字段。 TimeWindow只是一个带有TextBox WPF控件的图像。

您可以只是异步/等待,以便在工作完成时显示并关闭窗口。 就像是:

 private async void ShowWindow() { var aTimeWindow = new TimeWindow(); aTimeWindow.Show(); await Task.Run((Action)DoWork); aTimeWindow.Close(); } private void DoWork() { // perform long running work here } 

编辑:

不使用异步/等待

 private void ShowWindow() { var aTimeWindow = new TimeWindow(); aTimeWindow.Show(); Task.Run(()=> { DoWork(); }) .ContinueWith((t) => { Application.Current.Dispatcher.BeginInvoke((Action)(() => { aTimeWindow.Close(); })); }); } private void DoWork() { // perform long running work here }