Member 13711215 Ответов: 2

Повторите код, если процесс запущен


Здравствуйте, как я могу повторять снова и снова код, если процесс все еще работает?

Я хочу проверить, работает ли программа по-прежнему, если да, то проверяйте снова и снова, если нет, продолжайте выполнять следующую часть кода.

Function CheckIfRunning() As Boolean
        p = Process.GetProcessesByName("Ls32") 
        
        If p.Count > 0 Then
            ' Process is running
            CheckIfRunning = True

        Else
            ' Process is not running
            CheckIfRunning = False
        End If
    End Function


-вызывающая функция
CheckIfRunning()
                               If CheckIfRunning() = True Then
                                   CheckIfRunning()
                                   Threading.Thread.Sleep(800)
                               Else
                                   ButtonIncrement_Click(Nothing, Nothing)
                               End If


Что я уже пробовал:

while CheckIfRunning()=true
Петля

2 Ответов

Рейтинг:
13

OriginalGriff

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

Я бы посоветовал вам посмотреть на поток BackgroundWorker, чтобы обработать ваш цикл, и сообщить о "завершении процесса" обратно в поток пользовательского интерфейса.
Класс BackgroundWorker (System.ComponentModel) | Microsoft Docs[^] - это включает в себя пример.


Member 13711215

Спасибо

OriginalGriff

Всегда пожалуйста!

Рейтинг:
0

phil.o

Помимо решения 1, которое вполне уместно, я бы посоветовал вам не сравнивать булево с булевым.
Вместо

If CheckIfRunning() = True Then
писать
If CheckIfRunning() Then
И наоборот, вместо того, чтобы
If CheckIfRunning() = False Then
писать
If Not CheckIfRunning() Then
Причина этого заключается в том, что сравнение булева с булевым является избыточным и, следовательно, ненужным.