【问题标题】:WF 4.0 communicate with host when custom activity fires event自定义活动触发事件时,WF 4.0 与主机通信
【发布时间】:2011-03-02 22:53:04
【问题描述】:

我构建了一个 WF 4.0 应用程序,它编辑一些文件,然后复制到另一个目录。有些文件很大 - 在 1 -4 gigs 的范围内。所以我想把复制进度还给用户。

我正在使用 Microsoft Sync 框架来复制文件,它有一个触发的事件,其中包含为文件复制的百分比。

除了提供服务之外,我找不到直接将其传达回主机的方法 - 这似乎有点矫枉过正。

我对 WF4.0 还很陌生,所以我可能看多了一些非常明显的东西,但经过大量搜索后,我找不到直接的解决方案。

感谢任何帮助。

【问题讨论】:

    标签: workflow-foundation-4


    【解决方案1】:

    你应该看看Workflow Instance Extensions。您创建一个实现IWorkflowInstanceExtension 接口的类并添加一个发送进度通知的方法:

    class MyExtension : IWorkflowInstanceExtension
    {
        IEnumerable<Object> GetAdditionalExtensions()
        {
            return null;
        }
    
        void SetInstance(WorkflowInstanceProxy instance)
        { }
    
        public void SetProgress(int progress)
        {
            // implementation of your method can communicate with the user
        }
    }
    

    在运行工作流程之前,您将扩展程序添加到您的主机,例如WorkflowApplication:

    myWorkflowApplication.Extensions.Add(myExtension);
    

    在活动内部,您可以访问此扩展并调用其方法将进度信息发送到工作流之外:

    context.GetExtension<MyExtension>().SetProgress(progress);
    

    【讨论】:

    • 感谢 Damir,这正是我想要的:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多