C# Закрыть окно при запуске процесса

у меня есть окно WPF, которое должно закрыться при запуске процесса TeamViewer.

К сожалению, мне не удается построить подходящий цикл. Можете вы помочь мне?

 private void Window_Loaded(object sender, RoutedEventArgs e)
    {


       Process[] pname = Process.GetProcessesByName("TeamViewer");
       do
        {
            this.Close();
        }
       while (pname.Length > 0);

    }

Привет АйСтеффен

Покажите, что вы пробовали, чтобы кто-то мог развить это.

Ralf 17.05.2022 11:21

Сорри, я обновил свой пост

iSteffen 17.05.2022 11:24

Ваш код проверяет только один раз, если процесс запущен, внутри цикла он не проверяет. Ваш код зависнет.

Anand Sowmithiran 17.05.2022 11:34

Вы должны уступить, почитайте о waitforSingleObject

Anand Sowmithiran 17.05.2022 11:35

Сорри, а как тогда такое могло выглядеть?

iSteffen 17.05.2022 12:11
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
5
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны искать процесс "TeamViewer" внутри цикла, и, найдя любой его экземпляр, вы можете выйти из формы. Пример кода, который следит за экземпляром Блокнота, вы можете изменить его в соответствии со своими потребностями.

     do
     {
         Process[] proc = Process.GetProcessesByName("notepad");
         if (null != proc)
         {
              if (proc.Length > 0)
              {
                   //if any notepad process is running, then exit
                    return;
              }
         }

         //wait for some time, there are other efficient wait mechanisms
         Thread.Sleep(500); //wait for half sec

     }while(true);

В качестве альтернативы вместо Thread.Sleep вы также можете использовать Task.Delay, см. документы MS для примеров.

Anand Sowmithiran 17.05.2022 12:36

Имейте в виду, что Thread.Sleep заблокирует поток пользовательского интерфейса.

Clemens 17.05.2022 12:36

Большое спасибо! Теперь мне удалось это сделать с помощью решения Ананда Совмитирана.

iSteffen 17.05.2022 15:15

Другие вопросы по теме