Стандартный вывод не читает ничего, пока процесс не будет закрыт vb.net - PullRequest
0 голосов
/ 02 февраля 2020

Я пытаюсь перенаправить вывод из xfoil.exe с загружаемыми файлами здесь . Проблема заключается в том, что когда я перенаправляю стандартный вывод, мой код не будет ничего читать, пока я не использую команду "quit", которая закрывает внешний файл xfoil.exe, и, следовательно, я не могу выполнять дальнейшие команды.

сначала определяя переменные

Dim p as process = New Process()
Dim startinfo = New ProcessStartInfo()
Dim bt As Threading.Thread

Я запускаю процесс, используя

With startinfo
    .FileName = Application.StartupPath & "\appdata\xfoil.exe"
    .Arguments = ""
    .WorkingDirectory = Application.StartupPath
    .RedirectStandardError = True
    .RedirectStandardOutput = True
    .RedirectStandardInput = True
    .UseShellExecute = False
    .CreateNoWindow = True
End With

p.StartInfo = startinfo
p.EnableRaisingEvents = True

If Not IsNothing(bt) Then bt.Abort()
bt = New Threading.Thread(AddressOf ReadThread)
bt.IsBackground = True
bt.Start()
p.Start()

Определение для ReadThread:

Private Sub ReadThread()
    Dim rLine As String
    Do Until Leaving
        Try
            rLine = p.StandardOutput.Read()
            logtext += (Chr(rLine))
            If p.StandardOutput.Peek = -1 Then
                Me.Invoke(Sub() txtLog.AppendText(logtext))
                logtext = ""
            End If
        Catch ex As Exception
            Console.WriteLine("error  " & ex.Message)
        End Try
    Loop
End Sub

Эта установка прекрасно работает с другим приложением от того же разработчика. Марк дрела. Когда я использую другое приложение AVL со ссылкой для скачивания здесь все работает нормально. Тем не менее, xfoil не работает с этой настройкой, и я потратил несколько часов на это без какой-либо удачи. Я использую VB. net в Windows 10 в Visual Studio. NET 2019 Community Edition.

Редактировать Оба метода используют Threading и события были реализованы и не повезло.

Пример кода с использованием обоих методов в VB. net - теперь доступен на Github для просмотра комментариев. Дайте мне знать, если у кого-то есть опыт с этим и может помочь. Это действительно помогло бы моим ученикам в классе!

...