Блок потоков для обработки

#c# #.net #wpf #windows #multithreading

#c# #.net #wpf #Windows #многопоточность

Вопрос:

Я кодирую приложение C # wpf, и мне нужно заблокировать обработку, чтобы дождаться события. Если я использую поток.Sleep () событие никогда не запускается, пользовательский интерфейс также зависает, поэтому я не знаю, что еще делать.

 switch (process.Action)
            {
                case 1:
                    this.Goto(process.VarValue);
                    break;

                case 2:
                    this.Extract(process.VarKey, process.VarValue);
                    break;

                case 3:
                    this.Validate(new string[] { });
                    break;

                default:
                    break;
            }
  

Как и в случае «извлечения», он захватывает информацию и отправляет событие в службу, которая открывает другое окно WPF, которое появляется, запрашивая у пользователя ввод.

Пользовательский интерфейс отображается, но кнопка отправки зависает, а затем зависает приложение, я использую unity и eventaggregator, также Magellan для wpf, поэтому проект становится все более и более сложным.

Я пытаюсь использовать более простой метод ожидания потока для пользовательского ввода.

Пожалуйста, сообщите.

  1. запуск потока => переключить
  2. при извлечении case => отправляет событие во всплывающую службу, открывается (окно wpf, для ввода пользователем)
  3. я использую thread.sleep (1000) до тех пор, пока служба не отправит событие ответа
  4. но приложение зависает при использовании thread.sleep, включая (всплывающее окно).
  5. Я хочу дождаться пользовательского ввода в основном потоке.

Комментарии:

1. Не уверен, что я понимаю, что выполняется в каком потоке? Не могли бы вы уточнить?

2. Убедитесь, что вы не блокируете поток пользовательского интерфейса.

Ответ №1:

Используйте Window.ShowDialog , чтобы открыть ваше всплывающее окно. Showdialog вернется только после того, как всплывающее окно снова будет закрыто. Смотрите здесь. Нет необходимости в сложных потоковых сканерах.