0

(WorkflowApplicationによってホストされている)実行され、電子メールを送信し、ブックマークを使用して永続化するワークフローがあります。電子メールには、ワークフローをそのブックマークから再開できるリンクがあり、適切に実行されます。ただし、ワークフローが終了した後は、Webページが読み込まれることはありません。

ページがワークフローの終了を待っているようですが、終了することはありません。私はワークフローに非常に慣れておらず、マルチスレッドにも慣れていないので、私の質問は次のとおりです。

ワークフローを完全に終了して、制御がメインスレッドに戻されるようにするために、何か特別なことをする必要がありますか?デリゲートメソッドのように私は行方不明ですか?

乾杯

4

1 に答える 1

0

投稿してすぐにわかりましたので、ごめんなさい。ここにあります:

ワークフローは別のスレッド上にあったため、一度実行されるとメインスレッドと同期していませんでした。そのため、完了したデリゲートにメソッドを追加して、完了後にメインスレッドと同期するようにする必要がありました。忘れてしまいました。これが誰かを助けることを願っています。

まず、イベントとWorkflowApplicationオブジェクトを設定して自動リセットする必要があります

 private static AutoResetEvent _syncEvent = new AutoResetEvent(false);
 private static WorkflowApplcation _wfApp = new WorkflowApplication(new MyActivity());

次に、wfAppのデリゲートメソッドで、必ず次を呼び出します。

 _syncEvent.Set();

それで:

wfApp.Completed = (e) =>
              {
                Debug.WriteLine("Workflow completed: {0}", e.Outputs["Message"]);
                _syncEvent.Set();
              };

この最後の部分は私が欠けていたものです

于 2012-07-18T20:16:05.460 に答える