Я обрабатываю большие файлы после того, как они выбраны пользователем. Мой код выглядит следующим образом:Silverlight OpenFileDialog эквивалент DoEvents
if (FileDialog.ShowDialog() == true) {
// process really big file
}
Это замораживает пользовательский интерфейс, так что я пытался отобразить сообщение загрузки, прежде чем пользователь выбрал файл, чтобы дать им визуальный сигнал, что что-то происходит:
loadingMessage.Visibility = Visibility.Visible;
if (FileDialog.ShowDialog() == true) {
// process really big file
}
К сожалению, это все еще полностью зависает от пользовательского интерфейса во время обработки файла.
Что я нашел, что отлично работает, если я запускаю MessageBox сразу после выбора файла. Я думаю, что он вызывает вызов типа «DoEvents» под капотом, чтобы получить элементы флеша/ui во время выполнения.
loadingMessage.Visibility = Visibility.Visible;
if (FileDialog.ShowDialog() == true) {
MessageBox.Show("Sync!");
// process really big file
}
В таких случаях, как это большой файл все еще обрабатывается, как медленно, но отображается сообщение загрузки и экран пользовательского интерфейс получает синхронизируется вверх (я делаю некоторые другие вещи в реальных вещах, такие как показ курсора ожидания).
Вопрос:
Silverlight не имеет функциональности DoEvents. Есть ли вызов, который я могу сделать, помимо MessageBox.Show, чтобы иметь тот же эффект синхронизации пользовательского интерфейса и предотвращения OpenFileDialog от замораживания пользовательского интерфейса?