2010-05-22 2 views
0

Я запускаю рабочие процессы под asp.net и используя SynchronizationContext, чтобы сделать страницу «ожидающей» для рабочего процесса. Вот как я запускаю экземпляр рабочего процесса в asp.net:СинхронизацияКонтекст и закладки в WF4

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, когда рабочий процесс возобновляется и завершается (я думаю, что экземпляр рабочего процесса вызывает операцию снова завершен, когда он завершается, и возникает ошибка).

Я работаю с закладками под Asp.Net, любыми идеями?

ответ

0

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

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

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