Здравствуйте!
Недавно начал работать с потоками и наткнулся на один глюк, подскажите если не прав:
Const FileName As String = "C:\proga.exe"
Private _Process As Process
Private _ProcessStartInfo As New ProcessStartInfo(FileName, "")
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
_ProcessStartInfo.UseShellExecute = False
_ProcessStartInfo.RedirectStandardInput = True
_ProcessStartInfo.RedirectStandardOutput = True
_Process = Process.Start(_ProcessStartInfo)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim strTemp As String = ""
Application.DoEvents()
strTemp = _Process.StandardOutput.ReadToEnd()
MsgBox(strTemp)
End Sub
Я когда Button2 нажимаю, если буфер пустой, то моя программа виснет, и отвисает только , когда я proga.exe убиваю, при этом моя программа сообщает мне strTemp. Если я меняю strTemp = _Process.StandardOutput.ReadToEnd() на strTemp = _Process.StandardOutput.Peek(), то она отвисает, когда в буфере что-то появляется. Подскажите плиз...
Заранее Спасибо.
Ответить
|