2009-02-13 86 views
0

我得到了一个使用WWF和externaly引发事件的NullReference问题。 WWF状态机与服务实例一起在状态机中引发事件来提供数据以及 - 当然 - 改变状态。尽管使用事件的“正常”操作正常工作,但我遇到了一个奇怪的问题。Windows Workflow Foundation NullReferenceException

为了处理超时情况,我让状态初始化器使用一个外部超时机制来在篡改服务中注册一个回调。在给定的时间之后,回调函数将运行,并在状态机中引发超时事件。这些事件定义如下:

event EventHandler<ExternalDataEventArgs> DeviceSysmapBrdcstTimeoutEvent; 

和上述提到的工作如果没有从超时机制中调用。 ExternalDataEventArgs是使用有效的Guid创建的。该事件提出访问该事件内的代表:

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

,你可能会得到几方面的原因的详细信息,上面的异常,你需要检查内部异常财产

一个可能的原因可能我按时出来你可能想从状态A到B国,但你需要验证你实际上是在状态A

POST内部异常detials为清楚起见

1

您应该检查内部excep状态变化之前以了解更多细节。请检查您的事件服务类是否标记为[Serializable],并在事件参数中将WaitForIdle属性设置为true。

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

检查是否解决了问题。

谢谢。