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 的自訂活動
開啟 Visual Studio 2010。
依序選取 [檔案]、[新增]、[專案]。 在 [專案類型] 視窗中,選取 [Visual C#] 下方的 [Workflow 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)); }