Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 工作流基础4工作流应用完成的输出是空白的_C#_Arguments_Workflow Foundation 4_Bookmarks - Fatal编程技术网

C# 工作流基础4工作流应用完成的输出是空白的

C# 工作流基础4工作流应用完成的输出是空白的,c#,arguments,workflow-foundation-4,bookmarks,C#,Arguments,Workflow Foundation 4,Bookmarks,我刚刚开始把我的头缠在WF4上;我很难理解为什么我的输出在我的工作流程中是空白的 首先,我有一个包含序列对象(或活动?)的.xaml;它又包含一个“FirstCodeActivity”,其中包含以下代码: public class FirstCodeActivity : NativeActivity { public OutArgument<string> FirstCodeHasExecuted { get; set; } protected override void

我刚刚开始把我的头缠在WF4上;我很难理解为什么我的输出在我的工作流程中是空白的

首先,我有一个包含序列对象(或活动?)的.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");
  }
}
我的问题是,我可以理解为什么e.Outputs在其字典中不返回任何项,即使我在FirstCodeActivity中设置了属性

我做错了吗?我的第一个想法是序列作为不同的上下文运行,因此不包含FirstCodeActivity的输出

任何帮助都将不胜感激


Matt

已完成回调中的输出字典包含工作流中的输出参数,而不是作为工作流一部分执行的活动。如果你想在那里看到你的活动的结果,你需要创建一个工作流级别的OutArgument,并使用VB表达式将FirstCodeHasExecuted绑定到它。

谢谢你的回答!这是有道理的,虽然我还不是100%熟悉如何做到这一点,说我不知道VB是一种轻描淡写!让我确认一下,我会接受你的回答!
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();