【问题标题】:process pipeline in c#c#中的流程管道
【发布时间】:2009-12-15 18:41:39
【问题描述】:

我有一个循环,它产生新进程来运行一些“.exe”文件。我捕捉 这些“.exe”文件的输出到我的文本框。为了捕获输出 马上,我不能使用 process.waitforexit() 方法。我有正确的问题 现在是如果前一个进程需要很长时间才能运行,第二个进程将运行 不管前一个完成与否。这弄乱了我的输出。

有没有办法让我将进程插入队列结构,所以它 可以按顺序运行吗?

谢谢

【问题讨论】:

    标签: c# process


    【解决方案1】:

    当然:

    Queue<Process> processes = GetProcesses();
    while(processes.Count > 0) {
        Process process = processes.Dequeue();
        // execute process and capture output
    }
    

    这是Queue(T) 上的 MSDN。

    【讨论】:

    • 如果我理解正确的话,getProcesses 会创建一个新的 Process 组件数组并将它们与现有的流程资源相关联。但是,我只希望我在循环中创建的进程在队列中。在这种情况下我应该如何初始化队列?
    • GetProcesses 是填充队列的函数。使用Queue.Enqueue 将您创建的进程添加到队列中。
    【解决方案2】:

    您还可以在线程中并行运行进程并仅将输出排队。

    但是,您将不得不使用更复杂的锁定和通知系统。

    【讨论】:

      猜你喜欢
      • 2011-04-10
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-12
      • 2013-03-28
      • 2013-07-28
      相关资源
      最近更新 更多