【发布时间】:2011-05-05 16:19:19
【问题描述】:
我刚刚开始关注 WF4;我很难理解为什么我的输出在我的工作流程中是空白的。
首先,我有一个包含 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 属性中返回值“Yes”。
调试的时候可以确认书签事件触发成功了。
这是我的 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 的输出。
任何帮助将不胜感激。
马特
【问题讨论】:
标签: c# arguments workflow-foundation-4 bookmarks