工作流 4.0 中的调用方法

发布于 2024-11-04 09:00:29 字数 395 浏览 3 评论 0原文

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

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

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

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

提前致谢。

We have an application where we are creating an activity (say = CallA), this activity will be used in the worklfow project. This activity(CallA) will call a method which is present in another class(and another namespace). I have written a sample code for the method being called below :-

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

We want to use InvokeMethod feature provided in the toolbox and don't want to use codeactivity.

If anybody has used this feature of WF 4.0, please help.

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半衬遮猫 2024-11-11 09:00:29

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

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

希望它有帮助

In the target type you have to point to the class that implements the method.

In the method name you'll have to write the name. If the method is not static, then you'll need to create a variable of that class type, initialize it in advance and use it in the TargetObject property. You'll need a variable in your WF to store the result (using Result property on the Invoke activity)

Hope it helps

夏日落 2024-11-11 09:00:29

以下是针对此问题的建议

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
的活动
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

Here follows a suggestion for this question

1) Create a Windows Forms Application
2) Add a Class called Class 1 and change the namespace to WorkflowApplication1
3) Change the whole code from Class 1 to

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) Add an Activity called Activity1
5) Compile the solution
6) Open the Activity1 and add a sequence
7) Click on the sequence and create 2 variables, as shown below
enter image description here
8) Insert a InvokeMethod and a Writeline activities, as shown below

enter image description here
9) Edit the parameters of the Invoke Method, as shown below
enter image description here
10) Add a button and click it twice to create the Click event
11) Add the following piece of code inside your Form1 class and change the button1_Click event

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) Open the Output window (Ctrl-Alt-O). Run the application, click the button and check if the number 23 is shown in the output window

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文