晚了一點,但是這指給我一個更好的答案:Capturing binary output from Process.StandardOutput
Process cmdProcess = new Process();
ProcessStartInfo cmdStartInfo = new ProcessStartInfo();
cmdStartInfo.FileName = "samtools";
cmdStartInfo.RedirectStandardError = true;
cmdStartInfo.RedirectStandardOutput = true;
cmdStartInfo.RedirectStandardInput = false;
cmdStartInfo.UseShellExecute = false;
cmdStartInfo.CreateNoWindow = true;
cmdStartInfo.Arguments = "view -u " + BamFileName + " " + chromosome + ":" + start + "-" + end;
cmdProcess.EnableRaisingEvents = true;
cmdProcess.StartInfo = cmdStartInfo;
cmdProcess.Start();
using (FileStream str = new FileStream(outputFilePath, FileMode.Create))
{
cmdProcess.StandardOutput.BaseStream.CopyTo(str);
}
如果您希望異步做到這一點,你可以改爲使用CopyToAsync,等待返回的任務或添加ContinueWith完成。這對我很好。
恐怕我無法從.NET運行這個。我可以運行諸如「cmd.exe/c someApp.exe> file.txt」,但這仍然是一個解決方法。 – Elephantik 2010-10-25 14:43:43
@Elephantik是的,它可能是必需的。你想要的基本上是解決方法。 – Andrey 2010-10-25 14:45:54
我不同意OS支持的功能是解決方法;) – Elephantik 2010-10-25 15:04:18