#c# #wpf #user-interface #window #freeze
#c# #wpf #пользовательский интерфейс #окно #замерзнуть
Вопрос:
Я хочу открыть новое окно во время выполнения моего метода, чтобы показать, что что-то делается в фоновом режиме.
// Open second window
Encoder.Encode(imgSource, chooseDestination.Text);
// Close second window
РЕДАКТИРОВАТЬ: я хочу, чтобы новое окно отображалось все время, пока выполняется метод, потому что программа должна продолжаться только после завершения метода.
Я только хочу, чтобы появилось новое окно, чтобы показать пользователю, что что-то делается в фоновом режиме (например, чтобы в новом окне появился индикатор выполнения).
Комментарии:
1. Похоже, вы не задали ни одного вопроса. Но если вы покажете () окно, то пользователь потенциально может по-прежнему взаимодействовать с вашим исходным окном. Если вы сделаете окно прогресса модальным с помощью showdialog(), то это может немного усложнить код, который вы запускаете из первого окна. Например, как это закрыть модальное окно. Я предлагаю вам пересмотреть свое решение и вместо этого использовать панель. Закройте элементы управления в вашем главном окне. Установите флаг isbusy в mainwindowviewmodel true во время выполнения вашего процесса и используйте его для запуска всех команд. Установите значение false, как только закончите.
Ответ №1:
Возможно, вам следует рассмотреть возможность использования асинхронного программирования. Это полезно, когда вы не хотите замораживать компоненты приложения (например, пользовательский интерфейс), пока приложение выполняет определенные задачи.
Комментарии:
1. Я отредактировал свой пост, чтобы его было легче понять. Пользователь не должен иметь возможности что-либо делать во время выполнения моего метода Encode, вот почему я хочу показать новое окно только с индикатором выполнения. Таким образом, пользователь знает, что он должен ждать.
2.
Window2 window = new Window2(); window.Show(); Encoder.Encode(imgSource chooseDestination.Text); window.Close();
Это то, что вы ищете?