Есть стороннее консольное приложение.
Мне нужно сделать так:
1. запустить его моей программой,
2. из консоли асинхронно считывать текст построчно и выборочно выводить текст на label’ы,
3. если консольное приложение вылетело, запустить повторно,
4. если в консоли появится определенное сочетание слов, перезапустить приложение.
Второй пункт не получается сделать.
При таком чтении зависает на 13-й строке:
А когда закрываю консольное приложение, текст, который в нем был, начинает раскидываться по лейблам.
Мне нужно сделать так:
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
dim s As String = sOut.ReadLine
А когда закрываю консольное приложение, текст, который в нем был, начинает раскидываться по лейблам.