Quantcast
Channel: Форум программистов и сисадминов Киберфорум
Viewing all articles
Browse latest Browse all 514783

.NET 3.x Считывать текст асинхронно из консольного приложения - Visual Basic .NET

$
0
0
Есть стороннее консольное приложение.
Мне нужно сделать так:
1. запустить его моей программой,
2. из консоли асинхронно считывать текст построчно и выборочно выводить текст на label’ы,
3. если консольное приложение вылетело, запустить повторно,
4. если в консоли появится определенное сочетание слов, перезапустить приложение.

Второй пункт не получается сделать.
:

Public Class Form1
    Dim myProcess As Process = New Process()
    Dim sOut As System.IO.StreamReader
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        myProcess.StartInfo.FileName = "d:\statist.exe"
        myProcess.StartInfo.UseShellExecute = False
        myProcess.StartInfo.RedirectStandardOutput = True
        myProcess.Start()
        sOut = New System.IO.StreamReader(myProcess.StandardOutput.BaseStream, System.Text.Encoding.GetEncoding(866), False)
        Timer1.Enabled = True
    End Sub
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        dim s As String = sOut.ReadLine
        If InStr(s, "U0:") Then Label1.Text = s
        If InStr(s, "U1:") Then Label2.Text = s
        If InStr(s, "Pw:") Then Label3.Text = Now.ToString("HH:mm:ss") & s
        If InStr(s, "Can't restart") Then myProcess.Kill  ' зависло - закрываем
        If myProcess.HasExited Then Button1.Click  ' закрыто - запускаем
    End Sub
End Class

При таком чтении зависает на 13-й строке: dim s As String = sOut.ReadLine
А когда закрываю консольное приложение, текст, который в нем был, начинает раскидываться по лейблам.

Viewing all articles
Browse latest Browse all 514783

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>