1

Windows サービス (C#、.net 3.5) でホストされている非常に基本的なワークフローがあり、奇妙な問題があります。

構成:

  • ランタイムとワークフロー インスタンスは同じスレッドで作成されます。
  • インスタンスを継続的に実行するために、「エンドレス」ループでインスタンスで Start を実行するバックグラウンド スレッドがあります。

ワークフローから例外がスローされたときに、サービスをクリーンアップしてシャットダウンしたいと考えています。問題は、それが機能しないことです:)

私は基本的に行う停止方法を持っています:

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

ここでの問題は、workflowRuntime.StopRuntime() です。呼び出されると、スタックします。戻り値、例外、タイムアウトはありません。止まるだけです。workFlowInstance.TryUnload() も使用しようとしましたが、同じことです。立ち往生するだけです。

スレッド ID を確認しましたが、ワークフローを作成して開始した停止メソッドのスレッドと同じです。

アイデアはありますか?ワークフロー ランタイムのすべてのクリーンアップをスキップすると、サービスがゾンビ状態になり、シャットダウンできなくなります。

4

0 に答える 0