将标准输出复制到memorystream

时间:2018-07-13 07:43:19

标签: c# .net asynchronous process memorystream

我有一个过程,用于获取要在pdf / print中显示的字节数组。当我运行该进程时,我能够按预期获取字节数组。但是当执行 proc.StandardOutput.BaseStream.CopyTo(ms,2048); 语句时,我得到了一个例外。

下面是我的代码,

public byte[] GetCommandBytes(string command, string workingDirectory)
    {
        var procStartInfo = new ProcessStartInfo("cmd", "/c " + command);
        procStartInfo.WorkingDirectory = workingDirectory;
        procStartInfo.RedirectStandardOutput = true;
        procStartInfo.RedirectStandardInput = false;
        procStartInfo.UseShellExecute = false;
        procStartInfo.CreateNoWindow = true;
        var proc = new Process();
        proc.StartInfo = procStartInfo;
        proc.Start();
        var ms = new MemoryStream(2048);
        proc.StandardOutput.BaseStream.CopyTo(ms, 2048);
        proc.WaitForExit();
        return ms.ToArray();
    }

以下是我被弹出的例外情况

---------------------------

发生一个或多个错误。

异常:System.AggregateException 消息:发生一个或多个错误。

方法:ThrowIfExceptional

异常:System.Threading.Tasks.TaskCanceledException 消息:任务已取消。

方法:-

at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)    在System.Threading.Tasks.Task 1.GetResultCore(Boolean waitCompletionNotification) at System.Threading.Tasks.Task 1.get_Result()    在PETNet.Olympus.ServiceAdapters.ServiceAdapter.ExecuteGetCallReturnByteArray(字符串路由)    在PETNet.Olympus.ServiceAdapters.Production.TemplateResultServiceAdapter.GetPdf(Guid id,布尔值LockTemplateResult)    在PETNet.Olympus.UI.ViewModels.Production.TaskExecution.TemplateTxViewModel.GetPdf()    在PETNet.Olympus.UI.ViewModels.Production.TaskExecution.TemplateTxViewModel.Print()    在PETNet.Olympus.Common.CommandBuilder中。<> c__DisplayClass6_0.b__0(对象o)    在PETNet.Olympus.Common.ActionableCommand.DoExecuteMethod(Object parameter)

在PETNet.Olympus.Common.CommandSync.Execute(对象参数)上

0 个答案:

没有答案