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

后台 worker 执行以下任务:

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

  • 这里的问题是外部exe是否挂起。他们无法取消我的后台流程。
    由于我的后台工作人员正忙于等待其他过程完成,因此无法使用取消 token 。为了解决此问题,我在过程中使用了超时。此应用程序关闭后。

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

    在此先感谢您的时间和帮助。

    最佳答案

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

  • 使用超时指定取消 token
  • 在不阻塞线程的情况下将进程作为常规任务等待。
  • 关于c# - 如何使后台工作程序中的进程在CancellationPending事件中退出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57986169/

    10-16 21:10