c# - 如何使后台工作人员中的进程在 CancellationPending 事件中退出
问题描述
我有一个由 UI 和后台工作人员组成的应用程序。
后台工作人员执行以下任务:
- 创建一个进程并调用外部二进制文件 - 使用 System.Diagnostic.Process。
- 等待此进程退出。
- 使用数据更新 UI。
这里的问题是外部 exe 是否挂起。他们没有办法取消我的后台进程。由于我的后台工作人员正忙于等待其他进程完成,因此无法使用取消令牌。为了解决这个问题,我对我的进程使用了超时。此应用程序关闭后。
我的问题是有什么方法可以取消进程(由后台工作人员调用)以停止设置取消事件。
提前感谢您的时间和帮助。
解决方案
我认为您可以使用https://github.com/jamesmanning/RunProcessAsTask来实现此逻辑。有了这个库,你可以
- 指定带有超时的取消令牌
- await 进程作为一个顺序任务而不阻塞线程。
推荐阅读
- docker - NGINX 的 Docker Composer
- c++ - 未定义对植物 vtable 的引用?
- c++ - ZMQ::send() 抛出异常并终止 QNX 进程。为什么以及如何从中恢复?
- reactjs - React - 登录成功后重定向并重新渲染导航栏
- javascript - 有没有办法创建一个新的 HTMLDocument 实例并在其中运行 JavaScript?
- reactjs - PropTypes 没有显示任何无效类型的警告 - React
- python - 哪种 python 核心类型对列表内比较最有效?
- prometheus - 为什么我的 Prometheus 会消耗大量磁盘存储而没有连续写入数据?
- python - numpy 数组 - 根据多行选择最大值
- c - 无法将超过 640x480 像素的图像(没有灰色条)上传到 Google Drive - ESP-CAM 通过 HTTP POST base64 有效负载