我正在處理用戶選擇大文件後。我的代碼如下所示: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的效果?