是否可以等待代码活动中的书签恢复?

时间:2014-02-11 00:49:28

标签: c# workflow-foundation-4

我想要一个代码活动来调用自定义NativeActivity并在继续之前等待结果。我可以通过工作流设计器使用PickBranch触发器执行此操作,但是当我尝试在代码中执行此操作时,它会调用NativeActivity,但是当我尝试恢复它时,我会收到超时错误。

基本上,这就是我正在做的事情。


WaitForResponseBookmark nativeActivity = new WaitForResponseBookmark();

//This is where it sits and waits
var response = WorkflowInvoker.Invoke(nativeActivity);

以下是WaitForResponseBookmark

的代码

public class WaitForResponseBookmark : NativeActivity<RequestResponse>
    {
        protected override bool CanInduceIdle
        {
            get
            {
                return true;
            }
        }

    protected override void Execute(NativeActivityContext context)
    {
        context.CreateBookmark("WaitForResponseBookmark", BookmarkResumed);
    }

    private void BookmarkResumed(NativeActivityContext context,
        Bookmark bk, object state)
    {
        Result.Set(context, state);
    }
}

protected override void Execute(NativeActivityContext context) { context.CreateBookmark("WaitForResponseBookmark", BookmarkResumed); } private void BookmarkResumed(NativeActivityContext context, Bookmark bk, object state) { Result.Set(context, state); } }

也许我不应该使用WorkflowInvoker,我不知道......似乎没有太多关于这样做的文档,我至少可以找到。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

你可能会阻止自己。工作流是单线程的,我认为你正在等待某些事情发生时消耗线程。 WaitForResponseBookmark做了什么?

答案 1 :(得分:0)

您似乎正在使用WorkflowInvoker。此类工作流引擎不支持书签,您必须使用WorkflowApplication引擎。