【问题标题】:InvokeMethod in Workflow 4.0Workflow 4.0 中的 InvokeMethod
【发布时间】:2011-04-29 11:03:42
【问题描述】:

我们有一个应用程序,我们正在其中创建一个活动(比如 = CallA),该活动将在工作流项目中使用。此活动(CallA)将调用另一个类(和另一个命名空间)中存在的方法。我为下面调用的方法编写了一个示例代码:-

    namespace WorkflowApplication1
{
    class Class1
    {
        public int Trial(int a, int b)
        {
            return 23;
        }
    }
}

我们想使用工具箱中提供的 InvokeMethod 功能,不想使用 codeactivity。

如果有人用过WF 4.0的这个功能,请帮忙。

提前致谢。

【问题讨论】:

    标签: workflow workflow-foundation workflow-foundation-4


    【解决方案1】:

    在目标类型中你必须指向实现该方法的类。

    在方法名称中您必须写下名称。如果方法不是静态的,那么您需要创建该类类型的变量,提前对其进行初始化并在 TargetObject 属性中使用它。您需要在 WF 中使用一个变量来存储结果(在 Invoke 活动中使用 Result 属性)

    希望对你有帮助

    【讨论】:

    • 我知道这是几年后的事了,但是使用 InvokeMethod 而不是简单的 Assign 有什么优势,我发现它更具可读性?
    • 您可以做的不仅仅是分配。就是这样。
    【解决方案2】:

    以下是对这个问题的建议

    1) 创建 Windows 窗体应用程序
    2) 添加一个名为 Class 1 的类并将命名空间更改为 WorkflowApplication1
    3) 将整个代码从 Class 1 更改为

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace WorkflowApplication1
    {
        public class Class1
        {
            public int Trial(int a, int b)
            {
                return 23;
            }
         }
    }
    

    4) 添加一个名为 Activity1 的 Activity
    5) 编译解决方案
    6)打开Activity1并添加一个序列
    7)点击序列,创建2个变量,如下图
    8)插入一个InvokeMethod和一个Writeline活动,如下图


    9)编辑Invoke Method的参数,如下图
    10) 添加一个按钮并单击它两次以创建 Click 事件
    11) 在 Form1 类中添加以下代码并更改 button1_Click 事件

    namespace Generic
    {
    
    public partial class Form1 : Form
    {
    
        WorkflowApplication WFApp = null;
        AutoResetEvent WFAppEvent = null;
    
        public void RunWFApp()
        {
            WFAppEvent = new AutoResetEvent(false);
            WFApp = new WorkflowApplication(new Activity1());
    
            WFApp.Completed = delegate (WorkflowApplicationCompletedEventArgs e)
            {
                WFAppEvent.Set();
            };
            WFApp.Run();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            RunWFApp();
        }
    
        ...
        ...
        }
    }
    

    12) 打开输出窗口 (Ctrl-Alt-O)。运行应用程序,单击按钮并检查数字 23 是否显示在输出窗口中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多