我有一个非常基本的工作流托管在 Windows 服务(C#、.net 3.5)中,但有一个奇怪的问题。
配置:
- 运行时和工作流实例在同一个线程中创建。
- 我有一个后台线程在“无限”循环中在实例上执行 Start ,以使其连续运行。
当工作流抛出异常时,我想清理并关闭服务。问题是,它不起作用:)
我有一个基本上可以做到的停止方法:
...
backgroundThread.Join(..);
if (workflowRuntime.isStarted)
workflowRuntime.StopRuntime();
...
这里的问题是 workflowRuntime.StopRuntime()。调用时,它只是卡住了。没有返回值、异常或超时。它只是停止。我也尝试过使用 workFlowInstance.TryUnload(),但同样的事情。它只是卡住了。
我检查了线程 ID,它与创建和启动工作流的停止方法中的相同。
有什么想法吗?如果我只是跳过工作流运行时的所有清理,服务最终会处于僵尸状态并且无法关闭。