使用C#的Process启动的进程有时候会中断,并且不会继续向下执行

这两天接完SDK后要出Android包测试,可是使用Jenkins打包的时候总是在某个地方卡住。开始的时候没有在意,就一直中断再重新打,浪费了很多时间,最后发现还是同一个问题,于是就去研究了下打包日志。

研究发现是在通过Process执行Cmd命令行的时候突然中断了,而且中断后没有继续向下执行,封装的部分Process代码如下:
var allOutput = new StringBuilder();
using (var process = new Process())
{
    if (workingDirectory != null)
    {
        process.StartInfo.WorkingDirectory = workingDirectory;
    }
        
    process.StartInfo.FileName = cmd;
    process.StartInfo.Arguments = preArg + "\"" + command + "\"";
    process.StartInfo.UseShellExecute = useShellExecute;
    process.StartInfo.ErrorDialog = true;
    if (process.StartInfo.UseShellExecute)
    {
        process.StartInfo.CreateNoWindow = false;
        process.StartInfo.RedirectStandardOutput = false;
        process.StartInfo.RedirectStandardError = false;
    }
    else
    {
        process.StartInfo.CreateNoWindow = true;
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.RedirectStandardError = true;
    }
    process.Start();
    if (!process.StartInfo.UseShellExecute)
    {
        while (true)
        {
            var line = process.StandardOutput.ReadLine();
            if (line == null)
                break;
            allOutput.AppendLine(line);
            EditorUtility.DisplayProgressBar("[ExecuteCommand] " + command, line, fProgress);
            fProgress += .001f;
        }
        var err = process.StandardError.ReadToEnd();
        if (!String.I

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值