Вывод содержимого консоли в TextBox

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Lamer_Pavel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 23
Зарегистрирован: 09.10.2007 (Вт) 18:05

Вывод содержимого консоли в TextBox

Сообщение Lamer_Pavel » 24.01.2008 (Чт) 13:49

Я хочу,чтобы содержимое консоли выводилось в TextBox.
Но,пользуясь своим кодом,приложение зависает,
и покажет,что было в консоли,после того,как я закрою консоль(и
после этого перестает зависать само приложение).
Что у меня неправильно в коде?
Код: Выделить всё
Private SWOutput As IO.StreamReader
Private CmdProc As Process
Private StartInfo As ProcessStartInfo

    Public Sub Initialise(ByVal Console As String,arg as String)
        StartInfo = New ProcessStartInfo(Console,arg)
        StartInfo.RedirectStandardOutput = True
        StartInfo.UseShellExecute = False
        StartInfo.CreateNoWindow = True
        CmdProc = Process.Start(StartInfo)

    End Sub

    Public Function Read() As String
        On Error GoTo err

        SWOutput = CmdProc.StandardOutput
        read = SWOutput.ReadToEnd
        SWOutput.Close()
err:
    End Function

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 25.01.2008 (Пт) 10:52

Lamer_Pavel
Подход к .Net у тебя не правильный, в .Net ошибки никто так не обрабатывает, начни пожалуй с этого, а дальше посмотрим...


PS RTFM

PSS Потоки, как мне кажется будет ответом на твой вопрос, выполняй чтение из консоли в отдельном потоке

Lamer_Pavel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 23
Зарегистрирован: 09.10.2007 (Вт) 18:05

Сообщение Lamer_Pavel » 25.01.2008 (Пт) 18:16

Понял ошибку,надо заменить
Код: Выделить всё
read = SWOutput.ReadToEnd

на
Код: Выделить всё
read = SWOutput.ReadLine

Убрать обработчик ошибок,а также
Код: Выделить всё
SWOutput.Close()


И прога не тормозит

brigval
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 176
Зарегистрирован: 16.10.2005 (Вс) 12:37
Откуда: Подмосковье

Сообщение brigval » 15.03.2008 (Сб) 9:45

У меня вот так заработало считывание с консоли.

Код: Выделить всё
Public Function Read() As String
       
        SWOutput = CmdProc.StandardOutput

        cmdProc.WaitForExit(1)
        If Not cmdProc.HasExited Then cmdProc.Kill()

        read = SWOutput.ReadToEnd
        SWOutput.Close()
        cmdProc.Close()

End Function
brigval


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList  
cron