InvokeMethod в Workflow 4.0 - PullRequest
       0

InvokeMethod в Workflow 4.0

2 голосов
/ 29 апреля 2011

У нас есть приложение, в котором мы создаем действие (скажем, CallA), это действие будет использоваться в проекте worklfow. Это действие (CallA) вызовет метод, который присутствует в другом классе (и другом пространстве имен). Я написал пример кода для метода, вызываемого ниже: -

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

Мы хотим использовать функцию InvokeMethod, представленную на панели инструментов, и не хотим использовать кодовую активность.

Если кто-то использовал эту функцию WF 4.0, пожалуйста, помогите.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 29 апреля 2011

В целевом типе вы должны указать на класс, который реализует метод.

В названии метода вам нужно написать имя. Если метод не является статическим, вам необходимо создать переменную этого класса, заранее инициализировать ее и использовать в свойстве TargetObject. Вам понадобится переменная в вашей WF для сохранения результата (используя свойство Result в действии Invoke)

Надеюсь, это поможет

0 голосов
/ 27 августа 2017

Вот предложение по этому вопросу

1) Создание приложения Windows Forms
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 переменные, как показано ниже
enter image description here 8) Вставьте действия InvokeMethod и Writeline, как показано ниже

enter image description here
9) Отредактируйте параметры Invoke Method, как показано ниже
enter image description here 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 в окне вывода

...