1

我有一个非常基本的工作流托管在 Windows 服务(C#、.net 3.5)中,但有一个奇怪的问题。

配置:

  • 运行时和工作流实例在同一个线程中创建。
  • 我有一个后台线程在“无限”循环中在实例上执行 Start ,以使其连续运行。

当工作流抛出异常时,我想清理并关闭服务。问题是,它不起作用:)

我有一个基本上可以做到的停止方法:

...
backgroundThread.Join(..);
if (workflowRuntime.isStarted)
  workflowRuntime.StopRuntime();
...

这里的问题是 workflowRuntime.StopRuntime()。调用时,它只是卡住了。没有返回值、异常或超时。它只是停止。我也尝试过使用 workFlowInstance.TryUnload(),但同样的事情。它只是卡住了。

我检查了线程 ID,它与创建和启动工作流的停止方法中的相同。

有什么想法吗?如果我只是跳过工作流运行时的所有清理,服务最终会处于僵尸状态并且无法关闭。

4

0 回答 0