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 继承的自定义活动
OpenVisual Studio 2010。
选择 “文件”、“ 新建”和“ 项目”。 在“项目类型”窗口中选择 Visual C# 下的“工作流 4.0”,然后选择 v2010 节点。 在“模板”窗口中选择“活动库”。 将新项目命名为 HelloActivity。
右键单击 HelloActivity 项目中的 Activity1.xaml,然后选择“ 删除”。
右键单击 HelloActivity 项目,然后选择“ 添加”,然后选择 “类”。 将新类命名为HelloActivity.cs。
在HelloActivity.cs文件中,添加以下
using
指令。using System.Activities; using System.Activities.Statements;
通过将基类添加到类声明,使新类继承 NativeActivity 。
class HelloActivity : NativeActivity
通过添加方法 Execute 向类添加功能。
protected override void Execute(NativeActivityContext context) { Console.WriteLine("Hello World!"); }
重写 CacheMetadata 方法并且调用相应的 Add 方法,以便让工作流运行时了解自定义活动的变量、自变量、子级和委托。 有关详细信息,请参阅该 NativeActivityMetadata 类。
使用 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)); }