我剛開始用WF4包裝頭部;我正在努力理解爲什麼我的輸出在我的工作流程中是空白的。WorkFlow Foundation 4 WorkflowApplication已完成的輸出爲空
首先,我有一個包含Sequence對象(或Activity?)的.xaml;這又包含了「FirstCodeActivity」,它包含以下代碼:
public class FirstCodeActivity : NativeActivity
{
public OutArgument<string> FirstCodeHasExecuted { get; set; }
protected override void Execute(NativeActivityContext context)
{
context.CreateBookmark("FirstBookmark", OnResumeBookmark);
}
protected override bool CanInduceIdle
{
get { return true; }
}
public void OnResumeBookmark(NativeActivityContext context, Bookmark bookmark, object obj)
{
FirstCodeHasExecuted.Set(context, "Yes");
}
}
從我的理解,這應該當書籤設置FirstCodeHasExecuted屬性中返回值「是」。
調試時,我可以確認書籤事件已成功解除。
這裏是我的WF4初始化代碼:
var idleEvent = new AutoResetEvent(false);
var workflowApplication = new WorkflowApplication(new MyWorkFlow())
{
Idle = delegate { idleEvent.Set(); },
Completed = delegate(WorkflowApplicationCompletedEventArgs e)
{
Outputs = e.Outputs;
}
};
workflowApplication.Run();
idleEvent.WaitOne();
workflowApplication.ResumeBookmark("FirstBookmark", "Resume me!");
idleEvent.WaitOne();
我的問題是,我可以理解爲什麼e.Outputs返回它的字典中沒有任何項目,即使我的屬性被設置在FirstCodeActivity內。
我該怎麼處理這個錯誤?我的第一個想法是,序列作爲不同的上下文運行,因此不包含FirstCodeActivity的輸出。
任何幫助,將不勝感激。
馬特
感謝您的回答!這很有道理,雖然我還沒有100%熟悉如何做到這一點,並說我不知道VB是輕描淡寫!讓我確認一下,我會接受你的回答! – 2011-05-05 20:13:43