Поделиться через


Базовый класс NativeActivity

NativeActivity является абстрактным классом с защищенным конструктором. Подобно CodeActivity, NativeActivity используется для записи принудительного поведения посредством реализации метода Execute. В отличие от CodeActivity, NativeActivity имеет доступ ко всем предоставляемым функциональным возможностям среды выполнения рабочего процесса с помощью объекта NativeActivityContext, передаваемого методу Execute.

Использование NativeActivityContext

Доступ к функциям среды выполнения рабочего процесса можно получить из метода Execute при помощи элементов параметра context типа NativeActivityContext. Функции, доступные посредством NativeActivityContext:

  • Возвращение и задание аргументов и переменных.

  • Планирование дочерних действий с помощью ScheduleActivity

  • Прерывание выполнения действия с помощью Abort.

  • Отмена выполнения дочернего действия с помощью CancelChild и CancelChildren.

  • Получение доступа к закладкам действий при помощи таких методов, как CreateBookmark, RemoveBookmark и ResumeBookmark.

  • Пользовательские функции отслеживания с использованием Track.

  • Получение доступа к свойствам выполнения действия и свойствам значений с помощью GetProperty и GetValue.

  • Планирование задач и функций действий с помощью ScheduleAction и ScheduleFunc.

Создание пользовательского действия, которое наследуется от NativeActivity

  1. OpenVisual Studio 2010.

  2. Выберите "Файл", "Создать" и " Проект". Выберите рабочий процесс 4.0 в разделе Visual C# в окне "Типы проектов " и выберите узел версии 2010 . Выберите библиотекудействий в окне "Шаблоны ". Задайте имя для нового проекта HelloActivity.

  3. Щелкните правой кнопкой мыши Activity1.xaml в проекте HelloActivity и выберите "Удалить".

  4. Щелкните правой кнопкой мыши проект HelloActivity и выберите "Добавить" и " Класс". Задайте имя для нового класса HelloActivity.cs.

  5. В файле HelloActivity.cs добавьте следующие директивы using.

    using System.Activities;
    using System.Activities.Statements;
    
  6. Сделайте так, чтобы новый класс наследовал от действия NativeActivity путем добавления базового класса к объявлению класса.

    class HelloActivity : NativeActivity
    
  7. Добавьте функциональные возможности к классу путем добавления метода Execute.

    protected override void Execute(NativeActivityContext context)
    {
        Console.WriteLine("Hello World!");
    }
    
  8. Переопределите метод CacheMetadata и вызовите соответствующий метод Add, чтобы сообщить среде выполнения рабочего процесса о переменных, аргументах, дочерних элементах и делегатах пользовательского действия. Дополнительные сведения см. в описании класса NativeActivityMetadata.

  9. Для планирования закладок используйте объект NativeActivityContext. Подробные сведения о том, как создавать, планировать и возобновлять закладки, см. в разделе Bookmarks.

    protected override void Execute(NativeActivityContext context)
        {
            // Create a Bookmark and wait for it to be resumed.
            context.CreateBookmark(BookmarkName.Get(context),
                new BookmarkCallback(OnResumeBookmark));
        }