我正在处理用户选择大文件后。我的代码如下所示:Silverlight OpenFileDialog等效DoEvents
if (FileDialog.ShowDialog() == true) {
// process really big file
}
这冻结了UI,所以我想首先显示加载消息的用户选择的文件给他们一个视觉线索的东西正在发生前:
loadingMessage.Visibility = Visibility.Visible;
if (FileDialog.ShowDialog() == true) {
// process really big file
}
不幸的是,当文件正在处理时,这仍然完全冻结了用户界面。
我发现完美的作品是如果我在文件选择后立即激活MessageBox。我认为它在底层做了一个“DoEvents”类型的调用,以在运行时获得flush事件/ ui项。
loadingMessage.Visibility = Visibility.Visible;
if (FileDialog.ShowDialog() == true) {
MessageBox.Show("Sync!");
// process really big file
}
在这样的大文件仍在处理为慢,但显示的加载信息,并且屏幕UI被同步的了(我在做真实的东西一些其他的东西,如显示等待光标案例)。
问:
Silverlight有没有的DoEvents功能。除了MessageBox.Show之外,是否还有一个调用可以实现同步UI和防止OpenFileDialog冻结UI的效果?