C# process如何同时并发?

各位大佬好,目前我有一个需求,需要通过打开cmd窗体写入dos命令,
获取返回值之后,对返回值做解析截取,得到需要的内容。

目前遇到的问题是,如何能够一次性打开调用多个cmd窗体?因为我打开一个cmd
窗体后,执行dos命令需要5-7秒的时候,执行一次就需要耗费这么长的时间,对于
程序来说,等待时间太过长久了。因此想问,能否有什么方法,一次性打开多个
cmd窗体,同时并发执行?

或者,有其他更好的解决方案呢?

c#

1个回答

static void Main(string[] args)
{
Parallel.For(0, 100, (i) => {
Process.Start("path");
});
}

qq_33206188
归途_cy 回复程序员的键盘: 你所说的这种方法,可能不太适用我的场景。我要在执行完命令之后,解析返回值。这几个参数虽然互不干扰,但是用你所说的这种方式,我感觉不太合适。
大约一年之前 回复
qq_33206188
归途_cy 回复程序员的键盘: 是否有方法,能够同时打开多个cmd窗体呢?
大约一年之前 回复
qq_35955916
程序员的键盘 回复归途_cy: item你的cmd命令
大约一年之前 回复
qq_33206188
归途_cy 回复程序员的键盘: ForEach(lsit, (item)中的item指的是什么呢?
大约一年之前 回复
qq_33206188
归途_cy 回复程序员的键盘: 不太明白。能否加个QQ或者微信请教一下呢?
大约一年之前 回复
qq_35955916
程序员的键盘 回复归途_cy: 回复归途_cy: List<object> lsit = new List<object>(); Parallel.ForEach(lsit, (item) => { Process.Start("cmd"); }); 把所有命令扔到list里面存起来,然后遍历吧
大约一年之前 回复
qq_33206188
归途_cy 回复程序员的键盘: 一直循环执行同一个cmd吗?那如果我的cmd命令都不一样呢?这样应该就不行了吧?
大约一年之前 回复
qq_35955916
程序员的键盘 回复归途_cy: 这是个循环,在里面写一次实现就可以了,这是循环执行,但是不会等待上一个结果,而是立即开始下一次循环;
大约一年之前 回复
qq_33206188
归途_cy 回复程序员的键盘: 另外还有一个疑问,使用你说的这种方法,是一次性打开多个cmd界面还是依次打开呢?我目前使用的是线程池来管理,但是看界面效果,是依次打开的。以下是代码:ThreadPool.SetMinThreads(1, 1); ThreadPool.SetMaxThreads(20, 20); ThreadPool.QueueUserWorkItem(new WaitCallback(A11)); ThreadPool.QueueUserWorkItem(new WaitCallback(A22)); ThreadPool.QueueUserWorkItem(new WaitCallback(A33)); ThreadPool.QueueUserWorkItem(new WaitCallback(A44)); ThreadPool.QueueUserWorkItem(new WaitCallback(A55)); ThreadPool.QueueUserWorkItem(new WaitCallback(A66)); ThreadPool.QueueUserWorkItem(new WaitCallback(A77)); ThreadPool.QueueUserWorkItem(new WaitCallback(A88));
大约一年之前 回复
qq_33206188
归途_cy 回复程序员的键盘: 我的每个cmd都是不一样的,这时候process.start("patch")写多个吗?类似于这样:Parallel.For(0, 100, (i) => { Process.Start("path1");Process.Start("path2");Process.Start("path3"); });
大约一年之前 回复
qq_35955916
程序员的键盘 回复归途_cy: 回复归途_cy: path就是你要开的程序的路径,你打开cmd的话直接写cmd;i的话,只是这个循环的下标而已;这就是并行打开多个cmd.
大约一年之前 回复
qq_33206188
归途_cy 感谢回复。process.start("patch");表示什么意思呢?另外,i又代表的什么含义呢?
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问