У меня есть please wait
TextBlock
в моем XAML, свойство Visibility
которого связано со свойством IsBusy
в моей модели представления (которая реализует INotifyPropertyChanged
). Отдельная кнопка запускает долгоиграющий (2-3 секунды) процесс, вот так:
IsBusy = true;
try
{
// Do some long-running process
}
finally
{
IsBusy = false;
}
Но сообщение please wait
никогда не появляется. Я предполагаю, что операция выполняется в потоке пользовательского интерфейса и, следовательно, не дает ей возможности обновиться? Это действительно работает, если я запускаю приведенный выше код в отдельном потоке, но я не хочу, чтобы пользователь что-либо делал во время выполнения операции — я рад, что пользовательский интерфейс freeze
.
Как отобразить сообщение please wait
? Или мне лучше запустить его в фоновом потоке и (каким-то образом) заблокировать пользовательский интерфейс на время? Я использую .Net 4, кстати.
IsEnabled
вашего Form/Window/UserControl/etc к свойствуIsBusy
? Затем, когда он становится занятым, все окно отключается, чтобы пользователь не мог его изменить, не блокируя ваше приложение? - person Rachel   schedule 30.01.2013