0

私は asp.net の下でワークフローを実行しており、SynchronizationContext を使用してページをワークフローを「待機」させています。asp.net でワークフロー インスタンスを実行する方法は次のとおりです。

var workflowApplication = new WorkflowApplication(activity);
SynchronizationContext syncContext = SynchronizationContext.Current;
workflowApplication.Completed = delegate { syncContext.OperationCompleted(); };
workflowApplication.SynchronizationContext = syncContext;
syncContext.OperationStarted();
workflowApplication.Run();

アクティビティの 1 つで、ブックマークを使用します。ここで、CreateBookmark を呼び出すたびにページ処理を続行したいと考えています。ブックマークを設定する前に SynchronizationContext.Current.OperationCompleted() を呼び出してみましたが、ワークフローが再開して完了すると asp.net サイトがクラッシュします (ワークフローインスタンスは、完了してエラーが発生したときに OperationCompleted を再度呼び出すと思います)

Asp.Net でブックマークを操作するにはどうすればよいですか?

4

1 に答える 1

0

ブックマークを使用してワークフローを永続化する場合、Completed プロパティは呼び出されません。Completed プロパティを設定した後で、次の行を追加してみてください。

workflowApplication.PersistableIdle = args => {
  syncContext.OperationCompleted();
  return PersistableIdleAction.None;
};

これは完了ではなく呼び出され、ASP.NET コードは制御を取り戻す必要があります。PersistableIdleAction 列挙型を必要に応じて変更します。サンプル コードでは [なし] を選択しました。

于 2010-05-26T09:30:24.990 に答える