NativeActivity 基类

NativeActivity 是一个带有受保护的构造函数的抽象类。 与 CodeActivity 一样,NativeActivity 用于通过实现 Execute 方法来编写命令性行为。 与 CodeActivity 不同的是,通过传递给 NativeActivity 方法的 NativeActivityContext 对象,Execute 有权访问工作流运行时的所有公开的功能。

使用 NativeActivityContext

通过使用类型为 Executecontext 参数的成员,可从 NativeActivityContext 方法中访问工作流运行时的功能。 可通过 NativeActivityContext 使用的功能如下:

创建从 NativeActivity 继承的自定义活动

  1. 打开 Visual Studio 2010。

  2. 依次选择“文件”、“新建”和“项目”。 在“项目类型”窗口中的“Visual C#”下,选择“Workflow 4.0”,然后选择“v2010”节点。 在“模板”窗口中选择“活动库”。 将新项目命名为 HelloActivity。

  3. 右击 HelloActivity 项目中的 Activity1.xaml,然后选择“删除”。

  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));
        }