首页 > 解决方案 > 如何使后台工作人员中的进程在 CancellationPending 事件中退出

问题描述

我有一个由 UI 和后台工作人员组成的应用程序。

后台工作人员执行以下任务:

  1. 创建一个进程并调用外部二进制文件 - 使用 System.Diagnostic.Process。
  2. 等待此进程退出。
  3. 使用数据更新 UI。

这里的问题是外部 exe 是否挂起。他们没有办法取消我的后台进程。由于我的后台工作人员正忙于等待其他进程完成,因此无法使用取消令牌。为了解决这个问题,我对我的进程使用了​​超时。此应用程序关闭后。

我的问题是有什么方法可以取消进程(由后台工作人员调用)以停止设置取消事件。

提前感谢您的时间和帮助。

标签: c#multithreadingbackgroundworker

解决方案


我认为您可以使用https://github.com/jamesmanning/RunProcessAsTask来实现此逻辑。有了这个库,你可以

  1. 指定带有超时的取消令牌
  2. await 进程作为一个顺序任务而不阻塞线程。

推荐阅读