转自:http://blog.youkuaiyun.com/rekrad/article/details/8518019
在命令行可使用的命令,可以使用C#代码启动,并可以重定向该命令执行所得的标准输出流、標準輸入流和标准錯誤流。
具體類似代碼如下:
- private List<string> GetP4CommandLineStandardOutput(string strArgs, IP4StandardOutputReceiver outputReciever)
- ProcessStartInfo procInfo = new ProcessStartInfo(processName);
- procInfo.Arguments = arguments;
- procInfo.CreateNoWindow = true;
- procInfo.RedirectStandardOutput = true;
- procInfo.RedirectStandardInput = true;
- procInfo.UseShellExecute = false;
- p4ProcInfo.RedirectStandardError = true;
- Process p4P = Process.Start(p4ProcInfo);
- string strLine;
- StreamWriter wrt = p4P.StandardInput;
- wrt.WriteLine(inputArguments);
- StreamReader reader = p4P.StandardOutput;
- StreamReader errorReader = p4P.StandardError;
- while (!reader.EndOfStream)
- {
- strLine = reader.ReadLine();
- outputReciever.P4StandardOutPutRedirect(strLine);
- listStrStandardOuput.Add(strLine);
- }
- while (!errorReader.EndOfStream)
- {
- strLine = errorReader.ReadLine();
- outputReciever.P4StandardErrorRedirect("Error: " + strLine);
- }
- p4P.WaitForExit();
- p4P.Close();
- return listStrStandardOuput;
private List<string> GetP4CommandLineStandardOutput(string strArgs, IP4StandardOutputReceiver outputReciever)
{
ProcessStartInfo procInfo = new ProcessStartInfo(processName);
procInfo.Arguments = arguments;
procInfo.CreateNoWindow = true;
procInfo.RedirectStandardOutput = true;
procInfo.RedirectStandardInput = true;
procInfo.UseShellExecute = false;
p4ProcInfo.RedirectStandardError = true;
Process p4P = Process.Start(p4ProcInfo);
string strLine;
StreamWriter wrt = p4P.StandardInput;
wrt.WriteLine(inputArguments);
StreamReader reader = p4P.StandardOutput;
StreamReader errorReader = p4P.StandardError;
while (!reader.EndOfStream)
{
strLine = reader.ReadLine();
outputReciever.P4StandardOutPutRedirect(strLine);
listStrStandardOuput.Add(strLine);
}
while (!errorReader.EndOfStream)
{
strLine = errorReader.ReadLine();
outputReciever.P4StandardErrorRedirect("Error: " + strLine);
}
p4P.WaitForExit();
p4P.Close();
return listStrStandardOuput;
}
這裡自己定義了一個接口,用於異步更新UI主介面,把信息及時反饋與主介面。注意的是這裡procInfo裏面的一些bool值需要設置成true。StreamWriter是添加上去的示例代碼,爲了演示標準輸入重定向的方式。