Выполните пакетный файл в синхронизации, чтобы дождаться завершения внутреннего процесса в vb.net. - PullRequest
0 голосов
/ 04 декабря 2018

Мне нужно выполнить пакетный файл в модуле в vb.Net, но проблема в том, что я выполняю то же самое, и если программа завершается или нет, программа выполняет следующий шаг.

Если выполняется следующий шаг, мойпроцесс нарушен, потому что это создание текстового файла, и следующим шагом является загрузка в базу данных mysql.

Я пытаюсь выполнить в synlcok и не имею никакого различия, как использовать синхронизацию для завершения выполненияпакетный файл.

Мой код:

Dim myLock As Object

synlock myLock
    Dim pProces As Process = Process.Start(psi)
End synlock

delay(350)

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

1 Ответ

0 голосов
/ 04 декабря 2018

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

Вы можете использовать process.HasExited для ожидания завершения процесса.

Dim pProces As Process = Process.Start(psi)

While Not pProces.HasExited
    System.Windows.Forms.Application.DoEvents ' if this is a windows form or console app
End While

If pProces.ExitCode = 0 Then
    ' Continue your next step here
Else
    ' Error occured while running the batch file 
End If

ИЛИ

Вы можете использовать Процесс.Событие завершено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...