NativeActivity-Basisklasse
NativeActivity ist eine abstrakte Klasse mit einem geschützten Konstruktor. Wie CodeActivity wird auch NativeActivity zum Schreiben von imperativem Verhalten durch die Implementierung einer Execute-Methode verwendet. Im Gegensatz zu CodeActivity verfügt NativeActivity jedoch über Zugriff auf alle verfügbar gemachten Funktionen der Workflowlaufzeit durch das NativeActivityContext-Objekt, das an die Execute-Methode übergeben wurde.
Verwenden von NativeActivityContext
Innerhalb der Execute-Methode kann mithilfe von Membern des context
-Parameters vom Typ NativeActivityContext auf Funktionen des Workflows zugegriffen werden. Über NativeActivityContext sind unter anderem folgende Funktionen verfügbar:
Abrufen und Festlegen von Argumenten und Variablen
Planen von untergeordneten Aktivitäten mit ScheduleActivity
Abbrechen der Ausführung von Aktivitäten mit Abort.
Abbrechen der Ausführung untergeordneter Elemente mit CancelChild und CancelChildren
Zugreifen auf Aktivitätslesezeichen mit Methoden wie CreateBookmark, RemoveBookmark und ResumeBookmark
Benutzerdefinierte Überwachungsfunktionen mit Track
Zugeifen auf die Ausführungseigenschaften und Werteigenschaften der Aktivität mit GetProperty und GetValue
Planen von Aktivitätsaktionen und Funktionen mit ScheduleAction und ScheduleFunc
So erstellen Sie eine benutzerdefinierte Aktivität, die von NativeActivity erbt
OpenVisual Studio 2010.
Wählen Sie Datei, Neu und dann Projekt aus. Wählen Sie unter Visual C# im Fenster Projekttypen die Option Workflow 4.0 und danach den Knoten v2010 aus. Wählen Sie im Fenster Vorlagen die Option Aktivitätsbibliothek aus. Geben Sie dem neuen Projekt den Namen "HelloActivity".
Klicken Sie mit der rechten Maustaste im HelloActivity-Projekt auf "Activity1.xaml", und wählen Sie Löschen aus.
Klicken Sie mit der rechten Maustaste auf das HelloActivity-Projekt, und wählen Sie Hinzufügenund danach Klasse aus. Nennen Sie die neue Klasse HelloActivity.cs.
Fügen Sie der Datei "HelloActivity.cs" die folgenden
using
-Direktiven hinzu.using System.Activities; using System.Activities.Statements;
Legen Sie fest, dass die neue Klasse von NativeActivity erben soll, indem Sie der Klassendeklaration eine Basisklasse hinzufügen.
class HelloActivity : NativeActivity
Fügen Sie der Klasse die Funktionalität hinzu, indem Sie eine Execute-Methode hinzufügen.
protected override void Execute(NativeActivityContext context) { Console.WriteLine("Hello World!"); }
Überschreiben Sie die CacheMetadata-Methode, und rufen Sie die entsprechende Add-Methode auf, um Informationen zu den Variablen, Argumenten, untergeordneten Elementen und Delegaten der benutzerdefinierten Aktivität für die Workflowlaufzeit bereitzustellen. Weitere Informationen finden Sie in den Ausführungen zur NativeActivityMetadata-Klasse.
Verwenden Sie das NativeActivityContext-Objekt, um ein Lesezeichen zu planen. Nähere Informationen zum Erstellen, Planen und Fortsetzen eines Lesezeichens finden Sie unter 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)); }