架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3211|回复: 5

[资料] 【实战】.NET/C# 给方法设置超时时间

[复制链接]
发表于 2022-5-4 18:59:51 | 显示全部楼层 |阅读模式
需求:NET/C# 某个方法需要使用 System.Diagnostics.Process 调用其它程序操作,如果第三方程序一直没有回应就可能导致方法一直在等待中,因为第三方程序可能需要你输入一个命令,所以方法无论等多久都不会有回应,从而导致程序无法正常继续往下执行。

关于给方法设置超时时间,大家要考虑一下事情:

  • 方法虽然超时了,但是它可能还在继续执行
  • 如果超时还在继续执行,会不会占满线程?占满内存?占满 CPU?
  • 方法超时了,如何优雅的结束方法的执行


看到网上的一些代码,例如关于 Task 超时,虽然效果达到了,但是 Task 还是会继续执行,可能会一直占用着资源,导致程序崩溃。

代码如下:

QQ截图20220504105156.jpg

回顾主题,本文给方法设置超时时间是有针对性的,并不适用于所有的方法,只是提供一个思路,请根据自己实际情况修改。

我们方法调用 System.Diagnostics.Process 启动一个第三方程序,一旦方法超时后,我们要终止结束第三方程序的进程!代码如下:


(完)





上一篇:【实战】.NET/C# 通过命令行调用 7z 解压缩
下一篇:【实战】Nginx 使用 HTTPS 配置 SSL 证书
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-5-4 23:10:31 | 显示全部楼层
学习学习。。。
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-10-10 13:12:08 | 显示全部楼层
学习学习。。。
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-10-10 13:12:50 | 显示全部楼层
学习一下
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-10-10 13:13:27 | 显示全部楼层
来看看大佬的解决方案 嘻嘻嘻嘻
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2022-10-10 17:22:12 | 显示全部楼层
Task.WaitAsync() API in .NET 6

在 .NET 6 里新增加了一个 WaitAsync 的方法,用来异步地等待一个任务完成,异步等待的时候可以指定一个 Timeout 时间或者一个取消令牌 CancellationToken,在之前的版本中只有一个同步的 Wait 会等待任务的完成,不支持比较好的任务超时或取消处理,如果要实现的话要自己写扩展,很多开源项目甚至微软的项目里会有一个 TimeoutAfter 之类的扩展方法,有了 WaitAsync 之后就可以取代这些扩展了

https://andrewlock.net/a-deep-di ... nc-api-in-dotnet-6/
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-16 15:29

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表