2009-02-13 87 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; 

檢查是否解決了問題。

謝謝。