在c#中查询正在运行的windows工作流

本文关键字:windows 工作流 运行 查询 | 更新日期: 2023-09-27 18:25:14

我有一个计划作业(在asp.net中),它使用WorkflowApplication及其Run方法创建并运行多个工作流。由于Run是一种异步方法,因此在自己的工作流线程中启动工作流后,作业会快速返回,这太棒了!

但是,我不希望作业在所有以前的工作流完成(或失败)之前创建和运行新的工作流。因此,我的问题是,有没有一种方法可以查询运行工作流的工作流运行时?

我没有在工作流程中使用持久存储,因为它们不需要持久化。

添加:启动工作流的(web)线程(web作业)将在工作流完成之前结束其工作。几分钟后,一个新的作业线程再次启动,该线程需要知道以前"线程启动的工作流"的状态。如果我将跟踪数据(使用跟踪扩展)写入DB,我相信第2个线程可以查询它,但我宁愿避免使用DB。有没有办法询问工作流运行时是空闲的还是活动的?

在c#中查询正在运行的windows工作流

您使用工作流跟踪扩展。此报告工作流的状态。这是一个推送系统,所以你不用查询工作流,而是使用TrackingParticipant,当它检测到你要寻找的状态时,它会向你的主线程发出信号。

http://msdn.microsoft.com/en-us/library/ee513992(v=vs.110).aspx