我想实现这一点:
- 创建一个新窗口,它只是一个旋转加载器和一些静态文本,并显示它。
- 在 UI 线程上做一些计算(必须在那里完成)
- 关闭加载程序窗口
目前,当我在加载程序窗口上调用 .Show() 时,它根本不加载,它只是作为一个空白窗口挂出(UI 线程被阻塞,我不想要)
我可以做些什么来使加载程序窗口在我的计算完成的同时显示其内容?
private void CopyToClipboard(object sender, RoutedEventArgs e)
{
var selected = mDataGrid.SelectedItem;
var selectedIndex = mDataGrid.SelectedIndex;
var progressWindow = mProgressDialog.Create(this,"Copying data to clipboard");
progressWindow.Show();
try
{
mDataGrid.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
mDataGrid.SelectionMode = DataGridSelectionMode.Extended;
mDataGrid.SelectAllCells(); // SLOW !!!!
ApplicationCommands.Copy.Execute(null, mDataGrid); //SLOW !!!!
}
catch (Exception ex)
{
mLog.Error("Copying to clipboard", ex);
MessageBox.Show("Error while copying to clipboard");
}
finally
{
mDataGrid.SelectionMode = DataGridSelectionMode.Single;
mDataGrid.UnselectAllCells();
this.Select(selectedIndex, selected);
progressWindow.Close();
}
}