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