gpt4 book ai didi

c# - 如何强制终止 WorkflowInstance?

转载 作者:行者123 更新时间:2023-11-30 18:04:02 25 4
gpt4 key购买 nike

我有一个有点不寻常的场景,我需要能够在给定的超时阈值后彻底杀死“挂起”的自托管 WorkflowInstance。我尝试了 Abort()Terminate()Cancel() 方法,但这些方法都太“好”了。它们似乎都需要 WorkflowInstance 的响应才能被接受。

在我的场景中,工作流进入了无限循环,因此没有响应。由于工作流完全没有响应,对上述普通方法的调用将简单地挂起。我很惊讶地得知 WorkflowRuntime 似乎没有处理这种情况的机制,或者 Abort()Terminate() 是只是建议而不是暴力指令。

我搜索了 google/msdn/stackoverflow/etc,试图找出当 Terminate() 根本无法完成工作时该怎么做,结果一无所获。我考虑过创建我自己的基础事件并给它一个超时值,这样我的“根”事件就可以在其子事件之一挂起时自行终止。这种方法似乎我会用大锤猛击苍蝇......

有没有我忽略的技巧?

最佳答案

唯一真正的解决方案是将此视为错误,修复所有错误,并认为问题已解决。

强制中止被锁定在无限循环中的任何代码的唯一方法是在线程上调用Abort()。当然,这被认为是不好的 juju,只有在调用后可以确保应用程序的状态时才应该这样做。

因此,您必须提供 WorkflowApplication SynchronizationContext 的实现您编写的可以在工作流 Post() 所在的线程上调用 Abort()

关于c# - 如何强制终止 WorkflowInstance?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6586155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com