在c#中调用cmd,会出现奇怪的长时间等待

不知今夕何夕 2020-06-19 08:40:57

程序如上图所示。
情况描述:
在自己的电脑上运行不会延时,但在另一台电脑上刚打开软件的时候,会异常等待5秒或10秒,运行几分钟之后延时就基本没了。这个问题是每次都会发生的。

已做分析:
1、通过在调用上图的函数前后打印日志,确定延时就发生在这个函数里面;
2、网上有说是WaitForExit()这个导致的,
我在程序中试过删除这个函数,
也用了 process.StandardOutput.ReadToEnd();读取缓冲区,
还试过把StartInfo.RedirectStandardOutput = true;改为false,但都没有效果。

有点怀疑是电脑上有什么程序运行有影响,但似乎也不对,毕竟软件运行了几分钟之后就正常了。

有没有大神知道是什么原因,或者有解决的思路?
...全文
804 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
不知今夕何夕 2020-08-01
  • 打赏
  • 举报
回复
引用 4 楼 以专业开发人员为伍 的回复:
异步执行。为什么同步阻塞呢?
这是同步执行的,主程序必须确认这个函数执行完才能执行下一步。 现在主要是想搞清楚为什么调用这个函数,软件打开的前几分钟要5-10秒,之后就基本没有延时。执行的cmd指令是复制一个1k左右的txt文档到打印机的共享端口。
不知今夕何夕 2020-08-01
  • 打赏
  • 举报
回复
引用 4 楼 以专业开发人员为伍 的回复:
异步执行。为什么同步阻塞呢?
这是同步执行的,主程序必须等这个函数执行完才能往后运行。
  • 打赏
  • 举报
回复
异步执行。为什么同步阻塞呢?
不知今夕何夕 2020-07-10
  • 打赏
  • 举报
回复
引用 1 楼 lindexi_gd 的回复:
原因是你在等待一个进程,等待多久完全是等你的进程的执行
但是等待的那个语句我去掉,也还是有等待,难道这个执行还要等其它进程吗?是跟其它软件冲突了吗?
lindexi_gd 2020-06-29
  • 打赏
  • 举报
回复
原因是你在等待一个进程,等待多久完全是等你的进程的执行

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧