リアルタイムでプロセスの出力を取得しようとしていますと同時に変数に保存すると、私は他のstackoverflowの質問C# Show output of Process in real time、しかしInvalidOperationException
行のエラーStreamReader myStreamReader = myProcess.StandardOutput
が表示されますが、何が不足していますか?修正方法は?リアルタイムでプロセスの出力を取得中にエラーが発生しました
using System;
using System.IO;
using System.Diagnostics;
using System.Text.RegularExpressions;
namespace CallPython
{
class Program
{
static void Main(string[] args)
{
// full path of python interpreter
string python = @"C:\\Python27\python.exe";
// python app to call
string myPythonApp = @"C:\\Dropbox\script.py";
// dummy parameters to send Python script
string m = @"\\location\\build1";
string s = "emmc";
string a = "3980bdd4";
string ft = "60000";
string at = "60000";
string bt = "120000";
// Create new process start info
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(python);
// make sure we can read the output from stdout
myProcessStartInfo.UseShellExecute = false;
myProcessStartInfo.RedirectStandardOutput = true;
myProcessStartInfo.RedirectStandardError = true;
// start python app with arguments
//myProcessStartInfo.Arguments = myPythonApp + " " + "-m" + " " + m + " " + "-s" + " " + s + " " + "-a" + " " + a + " " + "-ft" + " " + ft + " " + "-at" + " " + at + " " + "-bt" + " " + bt;
myProcessStartInfo.Arguments = String.Format("{0} -m {1} -s {2} -a {3} -ft {4} -at {5} -bt {6}", myPythonApp, m,s,a,ft,at,bt);
Process myProcess = new Process();
// assign start information to the process
myProcess.StartInfo = myProcessStartInfo;
Console.WriteLine("Calling Python script with arguments {0} ,{1},{2},{3},{4},{5}", m, s,a,ft,at,bt);
// start the process
myProcess.Start();
myProcess.BeginErrorReadLine();
myProcess.BeginOutputReadLine();
StreamReader myStreamReader = myProcess.StandardOutput;
string myString = myStreamReader.ReadToEnd();
//Console.WriteLine(myString);
//Add code for parsing based on myString
// wait exit signal from the app we called and then close it.
myProcess.WaitForExit();
myProcess.Close();
Console.ReadLine();
}
}
}
をあなたも、引用された質問からのアプローチを試してみたのですか? stdoutストリームとstderrストリームをリダイレクトし、イベントハンドラをアタッチし、 'UseShellExecute'をfalseに設定しますか? – dlatikay