Gör så här: Skapa en aktivitet
Aktiviteter är den viktigaste beteendeenheten i WF. Körningslogik för en aktivitet kan implementeras i hanterad kod eller implementeras med hjälp av andra aktiviteter. Det här avsnittet visar hur du skapar två aktiviteter. Den första aktiviteten är en enkel aktivitet som använder kod för att implementera sin körningslogik. Implementeringen av den andra aktiviteten definieras med hjälp av andra aktiviteter. Dessa aktiviteter används i följande steg i självstudien.
Skapa aktivitetsbiblioteksprojektet
Öppna Visual Studio och välj Nytt>projekt på menyn Arkiv .
I dialogrutan Nytt projekt går du till kategorin Installerad och väljer Visual C#>Workflow (eller Visual Basic>Workflow).
Kommentar
Om du inte ser kategorin Arbetsflödesmall kan du behöva installera Komponenten Windows Workflow Foundation i Visual Studio. Välj länken Öppna Visual Studio Installer till vänster i dialogrutan Nytt projekt. I Visual Studio Installer väljer du fliken Enskilda komponenter . Under kategorin Utvecklingsaktiviteter väljer du sedan komponenten Windows Workflow Foundation . Välj Ändra för att installera komponenten.
Välj projektmallen Aktivitetsbibliotek . Skriv
NumberGuessWorkflowActivities
i rutan Namn och klicka sedan på OK.Högerklicka på Activity1.xaml i Solution Explorer och välj Ta bort. Bekräfta genom att klicka på OK .
Skapa ReadInt-aktiviteten
Välj Lägg till nytt objekt på Projekt-menyn .
I noden Installerade>vanliga objekt väljer du Arbetsflöde. Välj Kodaktivitet i listan Arbetsflöde .
Skriv
ReadInt
i rutan Namn och klicka sedan på Lägg till.Ersätt den befintliga
ReadInt
definitionen med följande definition.public sealed class ReadInt : NativeActivity<int> { [RequiredArgument] public InArgument<string> BookmarkName { get; set; } protected override void Execute(NativeActivityContext context) { string name = BookmarkName.Get(context); if (string.IsNullOrEmpty(name)) { throw new ArgumentException("BookmarkName cannot be an Empty string.", "context"); } context.CreateBookmark(name, new BookmarkCallback(OnReadComplete)); } // NativeActivity derived activities that do asynchronous operations by calling // one of the CreateBookmark overloads defined on System.Activities.NativeActivityContext // must override the CanInduceIdle property and return true. protected override bool CanInduceIdle { get { return true; } } void OnReadComplete(NativeActivityContext context, Bookmark bookmark, object state) { this.Result.Set(context, Convert.ToInt32(state)); } }
Public NotInheritable Class ReadInt Inherits NativeActivity(Of Integer) <RequiredArgument()> Property BookmarkName() As InArgument(Of String) Protected Overrides Sub Execute(ByVal context As NativeActivityContext) Dim name As String name = BookmarkName.Get(context) If name = String.Empty Then Throw New Exception("BookmarkName cannot be an Empty string.") End If context.CreateBookmark(name, New BookmarkCallback(AddressOf OnReadComplete)) End Sub ' NativeActivity derived activities that do asynchronous operations by calling ' one of the CreateBookmark overloads defined on System.Activities.NativeActivityContext ' must override the CanInduceIdle property and return True. Protected Overrides ReadOnly Property CanInduceIdle As Boolean Get Return True End Get End Property Sub OnReadComplete(ByVal context As NativeActivityContext, ByVal bookmark As Bookmark, ByVal state As Object) Result.Set(context, Convert.ToInt32(state)) End Sub End Class
Kommentar
Aktiviteten
ReadInt
härleds från NativeActivity<TResult> i stället för CodeActivity, vilket är standardvärdet för kodaktivitetsmallen. CodeActivity<TResult> kan användas om aktiviteten ger ett enda resultat, som exponeras via Result argumentet, men CodeActivity<TResult> inte stöder användning av bokmärken, så NativeActivity<TResult> används.
Skapa promptaktiviteten
Tryck på Ctrl+Skift+B för att skapa projektet. Genom att skapa projektet kan
ReadInt
aktiviteten i det här projektet användas för att skapa den anpassade aktiviteten från det här steget.Välj Lägg till nytt objekt på Projekt-menyn .
I noden Installerade>vanliga objekt väljer du Arbetsflöde. Välj Aktivitet i arbetsflödeslistan.
Skriv
Prompt
i rutan Namn och klicka sedan på Lägg till.Dubbelklicka på Prompt.xaml i Solution Explorer för att visa den i designern om den inte redan visas.
Klicka på Argument längst ned till vänster i aktivitetsdesignern för att visa fönstret Argument .
Klicka på Skapa argument.
Skriv
BookmarkName
i rutan Namn , välj In i listrutan Riktning , välj Sträng i listrutan Argumenttyp och tryck sedan på Retur för att spara argumentet.Klicka på Skapa argument.
Skriv
Result
i rutan Namn som finns under det nyligen tillagdaBookmarkName
argumentet, välj Ut i listrutan Riktning , välj Int32 i listrutan Argumenttyp och tryck sedan på Retur.Klicka på Skapa argument.
Skriv
Text
i rutan Namn , välj In i listrutan Riktning , välj Sträng i listrutan Argumenttyp och tryck sedan på Retur för att spara argumentet.Dessa tre argument är bundna till motsvarande argument för de WriteLine aktiviteter och
ReadInt
som läggs till iPrompt
aktiviteten i följande steg.Klicka på Argument längst ned till vänster i aktivitetsdesignern för att stänga fönstret Argument .
Dra en sekvensaktivitet från avsnittet Kontrollflöde i verktygslådan och släpp den på etiketten Släpp aktivitet här i aktivitetsdesignern Fråga.
Dricks
Om fönstret Verktygslåda inte visas väljer du Verktygslåda på menyn Visa .
Dra en WriteLine-aktivitet från avsnittet Primitiver i verktygslådan och släpp den på etiketten Släpp aktivitet här för sekvensaktiviteten.
Binda textargumentet för aktiviteten WriteLine till argumentet Text i aktiviteten Fråga genom att
Text
skriva in uttrycket Enter a C# eller Enter a VB expression (Ange ett VB-uttryck) i fönstret Egenskaper och tryck sedan på tabbtangenten två gånger. Detta stänger fönstret IntelliSense-listmedlemmar och sparar egenskapsvärdet genom att flytta markeringen från egenskapen. Den här egenskapen kan också anges genom attText
skriva i rutan Ange ett C#-uttryck eller Ange ett VB-uttryck i själva aktiviteten.Dricks
Om fönstret Egenskaper inte visas väljer du Egenskapsfönster på menyn Visa .
Dra en ReadInt-aktivitet från avsnittet NumberGuessWorkflowActivities i verktygslådan och släpp den i sekvensaktiviteten så att den följer writeline-aktiviteten.
Binda argumentet BookmarkName för ReadInt-aktiviteten till argumentet BookmarkName för aktiviteten Prompt genom att
BookmarkName
skriva i rutan Ange ett VB-uttryck till höger om argumentet BookmarkName i egenskapsfönstret och tryck sedan på tabbtangenten två gånger för att stänga fönstret MedlliSense-listmedlemmar och spara egenskapen.Binda argumentet Resultat för ReadInt-aktiviteten till argumentet Resultat för aktiviteten Fråga genom att
Result
skriva i rutan Ange ett VB-uttryck till höger om argumentet Resultat i fönstret Egenskaper och tryck sedan på tabbtangenten två gånger.Tryck på Ctrl+Skift+B för att skapa lösningen.
Nästa steg
Anvisningar om hur du skapar ett arbetsflöde med hjälp av dessa aktiviteter finns i nästa steg i självstudien How to: Create a Workflow (Så här skapar du ett arbetsflöde).