私のアプリケーションでは、isoを他のファイル形式に変換する外部コマンドラインツールを呼び出します。今、私はisoコンバータを呼び出し、それはバックグラウンドで実行されます。コマンドラインを介してisoコンバータを実行すると、何をしているのかがわかりますが、アプリケーションではバックグラウンドで実行されます。VB.NET他のアプリケーションからライブ状態を取得する
これは、isoconverterがテキストボックスで行われた後の状態を示しています。これを変更してライブステータスを表示するにはどうすればいいですか?私はコマンドラインツールに表示されるように?
これは私が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
いくつかのテストの後、実際にはCPUを70%、80%にプッシュしますが、どうすればこの問題をapplication.doeventsで解決できますか? – PandaNL
ループ内で 'System.Threading.Thread.Sleep(100)'への呼び出しを追加して、毎回100ミリ秒(0.1秒)待つことができます。これにより、ストリームから毎秒10回読み取られ、ほとんどの時間CPUが解放されます。このような高速更新レートが不要な場合は、スリープ時間を長くしてCPU使用量を減らすことができます。 – Justin