Я только начал оборачиваться вокруг WF4;и я изо всех сил пытаюсь понять, почему мои выходные данные остаются пустыми в моем рабочем процессе.
Во-первых, у меня есть .xaml, который содержит объект Sequence (или Activity?);который, в свою очередь, содержит «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.
Любая помощь будет принята.
Matt