C# 中的流程管道

发布于 2024-08-15 18:13:07 字数 209 浏览 2 评论 0原文

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

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

谢谢

I have a loop that spawn new process to run some ".exe" files. And I capture
the output of those ".exe" files to my textbox. In order to capture the outputs
right away, I can't use process.waitforexit() method. The problem I have right
now is if the previous process took a long time to run, a second process will run
regardless if the previous one finished or not. This messed up my outputs.

Is there a way for me to insert the processes into a queue structure so it
can be run in a sequential order?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

卸妝后依然美 2024-08-22 18:13:07

当然:

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

这是 MSDN 上的 Queue(T)

Sure:

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

Here's MSDN on Queue(T).

时光清浅 2024-08-22 18:13:07

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

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

You could also run the processes parallelly in threads and queue only the output.

However, you would have to use a more complicated locking and notification system.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文