C# 阅读活动中的粘滞值 我使用工作流基础4.5创建自定义本地活动。我想为活动设置一个书签,并在WorkflowApplication的PersistableIdle回调中执行一些自定义处理。在该回调中,我希望在持久化工作流实例之前,将提供的数据读取到活动的InArgument和/或属性中。因此,本质上,我希望在完成持久化过程之前,作为一个预步骤,从执行的活动上下文外部和运行时外部读取这些值

C# 阅读活动中的粘滞值 我使用工作流基础4.5创建自定义本地活动。我想为活动设置一个书签,并在WorkflowApplication的PersistableIdle回调中执行一些自定义处理。在该回调中,我希望在持久化工作流实例之前,将提供的数据读取到活动的InArgument和/或属性中。因此,本质上,我希望在完成持久化过程之前,作为一个预步骤,从执行的活动上下文外部和运行时外部读取这些值,c#,.net,workflow-foundation-4,C#,.net,Workflow Foundation 4,我想我可以用WorkflowInspectionServices助手类来实现这一点,但鉴于我必须从该活动实例的InArgument中读取上下文,所以还不清楚这是否有效 有没有另一个助手类可以让wf4.5实现这一点,我还没有发现?谢谢 wfApp.PersistableIdle += args => { using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew

我想我可以用WorkflowInspectionServices助手类来实现这一点,但鉴于我必须从该活动实例的InArgument中读取上下文,所以还不清楚这是否有效

有没有另一个助手类可以让wf4.5实现这一点,我还没有发现?谢谢

 wfApp.PersistableIdle += args =>
        {
            using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew))
            {
                wfApp.Unload();
                args.Bookmarks.ForEach(bookmark =>
                {
                    var activityId = bookmark.BookmarkName;

                    //Doesn't seem this will really work?
                    var activityInfo = WorkflowInspectionServices.Resolve(activity, activityId) as MyCustomActivity;


                    var recipientId = activityInfo.RecipientId.Get(<I have no context>);
                   workflowSuspendedCallback.Invoke(activityId, recipientId));
                });
                scope.Complete();
            }
            return PersistableIdleAction.None;
        };
wfApp.PersistableIdle+=args=>
{
使用(var scope=newtransactionscope(TransactionScopeOption.RequiresNew))
{
wfApp.Unload();
args.Bookmarks.ForEach(bookmark=>
{
var activityId=bookmark.BookmarkName;
//这看起来真的不管用吗?
var activityInfo=WorkflowInspectionServices.Resolve(activity,activityId)作为MyCustomActivity;
var recipientId=activityInfo.recipientId.Get();
workflowSuspendedCallback.Invoke(activityId,recipientId));
});
scope.Complete();
}
返回PersistableIdleAction.None;
};
使用了这个技巧。
谢谢您。

只需创建您自己的,即可从您的活动中获取此信息。太棒了。很好的进入运行时间。我还查看了工作流跟踪器,但这似乎有些过分,因为我只关心某些活动。