2009-02-13 14 views
0

У меня проблема NullReference, использующая WWF и внешние события, связанные с поднятием. Государственный автомат WWF работает вместе с событиями, вызывающими обслуживание, на государственном компьютере, чтобы предоставлять данные и, конечно же, изменять состояние. Хотя «нормальная» операция отлично работает с использованием событий, у меня возникла странная проблема.Windows Workflow Foundation NullReferenceException

Чтобы обработать сценарии тайм-аута, я разрешаю инициализатору состояния использовать внешний механизм тайм-аута для регистрации обратного вызова в обслуживаемой службе. По истечении заданного времени функция обратного вызова запускается и поднимет событие таймаута в конечном автомате. События определяются следующим образом:

event EventHandler<ExternalDataEventArgs> DeviceSysmapBrdcstTimeoutEvent; 

и, как упоминалось, исправно работает, если не вызывается из таймаут-маханизма. ExternalDataEventArgs создаются с использованием действительных Гидов. Excetion получает доступ к делегату в рамках мероприятия:

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) 

Кто-нибудь знает? Благодарю.

ответ

1

вы можете получить выше исключение по нескольким причинам для деталей вы должны проверить Внутреннее исключение свойства

одна из возможных причин могут мне, что тайм-аут вы можете захотеть перейти из состояния А государство B, но до изменения состояния вы должны убедиться, что вы на самом деле в состоянии A

POST внутреннего Исключение detials для ясности

1

вы должны проверить внутренний excep для более подробной информации. Проверьте, отмечены ли классы обслуживания событий [Serializable], а также значение свойства WaitForIdle равно true в аргументах событий.

CustomEventDataArgs eventArgs = new CustomEventDataArgs(); 
// 
eventArgs.WaitForIdle = true; 

Проверьте, не устранена ли проблема.

Спасибо.

Смежные вопросы