美文网首页
C# 线程超时,终止调用第三方程序并返回超时结果

C# 线程超时,终止调用第三方程序并返回超时结果

作者: flyinghat | 来源:发表于2019-04-11 14:20 被阅读0次

使用场景:项目中需要利用cmd调用一个exe程序并等待返回结果,如果长时间没有回应则返回超时。

       public static void RunCmd(CompilerData cdata)
        {
            var cancellationTokenSource = new CancellationTokenSource();
            var th = new Thread(() =>
            {
                Run(cdata);  //这个是执行调用cmd并运行exe程序的方法,下面有执行的方法链接
            });
            cancellationTokenSource.Token.Register(() =>
            {
                th.Abort();
                cdata.TimeOut = true;
                //这里查找到第三方exe程序的进程,并杀死该进程
                Process[] process = Process.GetProcesses();
                var proc = process.FirstOrDefault(i => i.ProcessName == cdata.ExeName);
                if (proc != null) 
                {
                    if (!proc.HasExited)
                    {
                        //立即停止相关进程
                        proc.Kill();
                    }
                    if (proc != null)
                    {
                        proc.Close();
                        proc.Dispose();
                        proc = null;
                    }
                }
            });
            //设置超时时间
            cancellationTokenSource.CancelAfter(10000);
            th.Start();
            th.Join();
        }

C#执行外部程序之执行DOS命令

相关文章

  • C# 线程超时,终止调用第三方程序并返回超时结果

    使用场景:项目中需要利用cmd调用一个exe程序并等待返回结果,如果长时间没有回应则返回超时。 C#执行外部程序之...

  • C# 多线程学习 2018-07-05

    C# 多线程 使用背景:因为Webservice 调用公司邮件报警接口导致后续代码执行不了(提示网络超时),于是开...

  • JUC并发编程

    知识点: 线程生命周期(新建、运行、阻塞、等待(一直等待)、超时等待(超时取消等待)、终止); Synchroni...

  • 超时调用和间歇调用

    超时调用和间歇调用区别 超时调用:在指定的时间过后执行代码。 调用setTimeout()之后,该方法会返回一个数...

  • 2018-12-13

    8.1.6 间歇调用和超时调用 Javascript是单线程语言,但是它允许通过设置超时值和间歇时间值来调度代码...

  • OJ TIME LIMIT EXCEEDED

    oj做题 time limit exceeded 可能原因:① 没有循环终止条件② 函数调用超时,如调用函数pow...

  • (6)wait和notify

    wait 该方法用来将当前调用线程置于WAITING(没有超时时间)或者TIMED_WAITING(有超时时间)状...

  • SpringCloud Fegin超时重试源码

    springCloud中最重要的就是微服务之间的调用,因为网络延迟或者调用超时会直接导致程序异常,因此超时的配置及...

  • 使用synchronized和wait实现一个显示锁Lock

    首先明确一次显示锁Lock需要的功能: 线程加锁; 线程超时加锁,超时报超时异常; 线程解锁; 获取阻塞的线程集合...

  • FULL GC/接口超时/服务没响应排查思路与实战

    问题背景 调用方反馈调用我这边服务接口超时,超时时间设置是1分钟,正常最长也就几秒内返回,服务已经正常运行至少1个...

网友评论

      本文标题:C# 线程超时,终止调用第三方程序并返回超时结果

      本文链接:https://www.haomeiwen.com/subject/yvetwqtx.html