Bookmark Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Reprezentuje punkt, w którym przepływ pracy lub działanie może pasywnie czekać na wznowienie.
public ref class Bookmark : IEquatable<System::Activities::Bookmark ^>
[System.Runtime.Serialization.DataContract]
public class Bookmark : IEquatable<System.Activities.Bookmark>
[<System.Runtime.Serialization.DataContract>]
type Bookmark = class
interface IEquatable<Bookmark>
Public Class Bookmark
Implements IEquatable(Of Bookmark)
- Dziedziczenie
-
Bookmark
- Atrybuty
- Implementuje
Przykłady
W poniższym przykładzie ReadLine
zostanie utworzone działanie. Po wykonaniu ReadLine
działanie tworzy obiekt Bookmark, rejestruje wywołanie zwrotne, a następnie czeka na Bookmark wznowienie działania. Po wznowieniu ReadLine
działanie przypisuje dane przekazane z argumentem do argumentu BookmarkResult .
public sealed class ReadLine : NativeActivity<string>
{
[RequiredArgument]
public InArgument<string> BookmarkName { get; set; }
protected override void Execute(NativeActivityContext context)
{
// Create a Bookmark and wait for it to be resumed.
context.CreateBookmark(BookmarkName.Get(context),
new BookmarkCallback(OnResumeBookmark));
}
// 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; }
}
public void OnResumeBookmark(NativeActivityContext context, Bookmark bookmark, object obj)
{
// When the Bookmark is resumed, assign its value to
// the Result argument.
Result.Set(context, (string)obj);
}
}
W poniższym przykładzie tworzony jest przepływ pracy, który używa ReadLine
działania do zbierania nazwy użytkownika i wyświetlania go w oknie konsoli. Aplikacja hosta wykonuje rzeczywistą pracę zbierania danych wejściowych i przekazuje ją do przepływu pracy, wznawiając Bookmarkpolecenie .
Variable<string> name = new Variable<string>
{
Name = "name"
};
Activity wf = new Sequence
{
Variables =
{
name
},
Activities =
{
new WriteLine()
{
Text = "What is your name?"
},
new ReadLine()
{
BookmarkName = "UserName",
Result = name
},
new WriteLine()
{
Text = new InArgument<string>((env) => "Hello, " + name.Get(env))
}
}
};
AutoResetEvent syncEvent = new AutoResetEvent(false);
// Create the WorkflowApplication using the desired
// workflow definition.
WorkflowApplication wfApp = new WorkflowApplication(wf);
// Handle the desired lifecycle events.
wfApp.Completed = delegate(WorkflowApplicationCompletedEventArgs e)
{
// Signal the host that the workflow is complete.
syncEvent.Set();
};
// Start the workflow.
wfApp.Run();
// Collect the user's name and resume the bookmark.
// Bookmark resumption only occurs when the workflow
// is idle. If a call to ResumeBookmark is made and the workflow
// is not idle, ResumeBookmark blocks until the workflow becomes
// idle before resuming the bookmark.
wfApp.ResumeBookmark("UserName", Console.ReadLine());
// Wait for Completed to arrive and signal that
// the workflow is complete.
syncEvent.WaitOne();
Po wykonaniu ReadLine
działania tworzy Bookmark nazwę, UserName
a następnie czeka na wznowienie zakładki. Host zbiera żądane dane, a następnie wznawia życiorys .Bookmark Przepływ pracy jest wznawiany, wyświetla nazwę, a następnie kończy. Należy pamiętać, że w odniesieniu do wznowienia zakładki nie jest wymagany żaden kod synchronizacji. Można Bookmark wznowić tylko wtedy, gdy przepływ pracy jest bezczynny, a jeśli przepływ pracy nie jest bezczynny, wywołanie do ResumeBookmark bloków, dopóki przepływ pracy nie stanie się bezczynny.
Uwagi
Gdy działanie tworzy element Bookmark, staje się bezczynne i czeka na Bookmark wznowienie działania. Jeśli istnieją inne działania równolegle z działaniem, które utworzyły Bookmarkelement , zostaną one zaplanowane do wykonania.
Zakładki można wznowić przez aplikację hosta przy użyciu jednego z ResumeBookmark przeciążeń.
Aby uzyskać więcej informacji na temat zakładek, zobacz Using WorkflowInvoker and WorkflowApplication and Bookmarks (Używanie funkcji WorkflowInvoker i WorkflowApplication iZakładek).
Konstruktory
Bookmark(String) |
Inicjuje Bookmark nowe wystąpienie klasy przy użyciu określonej nazwy. |
Właściwości
Name |
Pobiera nazwę zakładki. |
Metody
Equals(Bookmark) |
Określa, czy bieżący Bookmark i określony Bookmark odwołuje się do tego samego punktu kontynuacji w przepływie pracy. |
Equals(Object) |
Określa, czy bieżący Bookmark i określony obiekt odwołują się do tego samego punktu kontynuacji w przepływie pracy. |
GetHashCode() |
Zwraca unikatowy identyfikator dla tego Bookmark wystąpienia. |
GetType() |
Type Pobiera bieżące wystąpienie. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ToString() |
Zwraca nazwę zakładki dla nazwanej zakładki lub identyfikator zakładki dla nienazwanej zakładki. |