Синхронизация контекста и закладок в WF4 - PullRequest
0 голосов
/ 22 мая 2010

Я запускаю рабочие процессы на 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();

В одном из упражнений я использую закладку. Теперь я хочу, чтобы обработка страницы продолжалась всякий раз, когда я вызываю CreateBookmark. Я пытался вызвать SynchronizationContext.Current.OperationCompleted () перед установкой закладки, но это приводит к разрушению сайта asp.net, когда рабочий процесс возобновляется и завершается (я думаю, что экземпляр рабочего процесса снова вызывает OperationCompleted, когда завершается и возникает ошибка)

Как мне работать с закладками в Asp.Net, есть идеи?

1 Ответ

0 голосов
/ 26 мая 2010

Завершенное свойство не вызывается, когда вы сохраняете рабочий процесс с закладкой, попробуйте добавить эту строку после настройки завершенного свойства:

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

Это должно быть вызвано вместо завершения, и код ASP.NET должен восстановить контроль. Измените перечисление PersistableIdleAction на то, что требуется, я просто выбрал None, например, для кода.

...