我们有一个应用程序,我们正在创建一个活动(比如说= CallA),这个活动将在worklfow项目中使用。此活动(CallA)将调用另一个类(和另一个名称空间)中存在的方法。我已经为下面调用的方法编写了一个示例代码: -
namespace WorkflowApplication1
{
class Class1
{
public int Trial(int a, int b)
{
return 23;
}
}
}
我们希望使用工具箱中提供的InvokeMethod功能,并且不想使用代码活动。
如果有人使用WF 4.0的此功能,请提供帮助。
提前致谢。
答案 0 :(得分:2)
在目标类型中,您必须指向实现该方法的类。
在方法名称中,您必须编写名称。如果该方法不是静态的,那么您需要创建该类类型的变量,事先对其进行初始化并在TargetObject属性中使用它。您需要在WF中使用一个变量来存储结果(在Invoke活动中使用Result属性)
希望有所帮助
答案 1 :(得分:0)
以下是对此问题的建议
1)创建Windows窗体应用程序
2)添加一个名为Class 1的类,并将名称空间更改为WorkflowApplication1
3)将整个代码从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方法的参数,如下所示
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是否显示在输出窗口中