С моим приложением я вызываю инструмент внешней командной строки, который обращается к другим файлам. Прямо сейчас я просто вызываю iso-конвертер, и он будет работать в фоновом режиме, когда вы запустите изо-конвертер через командную строку, вы увидите, что он делает, но в моем приложении он просто работает в фоновом режиме.VB.NET Получение статуса live из другого приложения
Прямо сейчас он дает мне статус после того, как isoconverter сделан в текстовом поле, как я могу изменить это, чтобы я мог видеть статус в реальном времени? как я увижу в инструменте командной строки?
Это код, который я вызываю для выполнения изоконвертера.
Private Sub GETCMD3()
Dim CMDprocess As New Process
Dim StartInfo As New System.Diagnostics.ProcessStartInfo
StartInfo.FileName = "cmd"
StartInfo.CreateNoWindow = True
StartInfo.RedirectStandardInput = True
StartInfo.RedirectStandardOutput = True
StartInfo.UseShellExecute = False
CMDprocess.StartInfo = StartInfo
CMDprocess.Start()
Dim SR As System.IO.StreamReader = CMDprocess.StandardOutput
Dim SW As System.IO.StreamWriter = CMDprocess.StandardInput
SW.WriteLine("Isoconvert.exe " & txtIsoFile.Text)
SW.WriteLine("exit")
txtIsoOutput.Text = SR.ReadToEnd
SW.Close()
SR.Close()
End Sub
Он отлично работает, именно то, что я искал благодаря. – PandaNL
После некоторого тестирования он действительно подталкивает процессор к 70%, 80%, как я могу решить эту проблему с помощью application.doevents? – PandaNL
Вы можете добавить вызов 'System.Threading.Thread.Sleep (100)' внутри цикла, чтобы ждать 100 миллисекунд (0,1 секунды) каждый раз. Затем он будет считываться из потока 10 раз в секунду и освобождать процессор большую часть времени. Вы можете увеличить время сна, чтобы уменьшить использование ЦП, если вам не нужна такая быстрая скорость обновления. – Justin