У меня проблема с NullReference при использовании WWF и внешних событий. Конечный автомат WWF работает вместе с экземпляром службы, вызывающим события в конечном автомате, для предоставления данных и, конечно же, для изменения состояния. В то время как «нормальная» операция работает нормально с использованием событий, у меня возникла странная проблема.
Для обработки сценариев тайм-аута я позволил инициализатору состояния использовать внешний механизм тайм-аута для регистрации обратного вызова в упомянутой службе. По истечении заданного времени функция обратного вызова запускается и вызывает событие тайм-аута в автомате. События определены так:
event EventHandler<ExternalDataEventArgs> DeviceSysmapBrdcstTimeoutEvent;
и, как уже упоминалось, работает правильно, если не вызывается из механизма тайм-аута. ExternalDataEventArgs создаются с использованием допустимых направляющих. Возникает исключение при доступе к делегату в рамках события:
System.Workflow.Activities.EventDeliveryFailedException was unhandled by user code
Message="Event \"DeviceSysmapBrdcstTimeoutEvent\" on interface type \"...\" for instance id \"efa3da3d-8546-4fcf-bc56-bbec04df6d69\" cannot be delivered."
Source="System.Workflow.Activities"
StackTrace:
at System.Workflow.Activities.WorkflowMessageEventHandler.EventHandler(Object sender, ExternalDataEventArgs eventArgs)
Есть идеи? Благодарю.