Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Bookmark-Klasse

.NET Framework (current version)
 

Veröffentlicht: Oktober 2016

Stellt einen Punkt dar, an dem ein Workflow bzw. eine Aktivität passiv warten kann, bis die Wiederaufnahme erfolgt.

Namespace:   System.Activities
Assembly:  System.Activities (in System.Activities.dll)

System.Object
  System.Activities.Bookmark

[DataContractAttribute]
public class Bookmark : IEquatable<Bookmark>

NameBeschreibung
System_CAPS_pubmethodBookmark(String)

Initialisiert eine neue Instanz der Bookmark-Klasse unter Verwendung des angegebenen Namens.

NameBeschreibung
System_CAPS_pubpropertyName

Ruft den Namen des Lesezeichens ab.

NameBeschreibung
System_CAPS_pubmethodEquals(Bookmark)

Bestimmt, ob das aktuelle Bookmark und das angegebene Bookmark auf den gleichen Fortsetzungspunkt in einem Workflow verweisen.

System_CAPS_pubmethodEquals(Object)

Bestimmt, ob das aktuelle Bookmark und das angegebene Objekt auf den gleichen Fortsetzungspunkt in einem Workflow verweisen.(Überschreibt Object.Equals(Object).)

System_CAPS_protmethodFinalize()

Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Geerbt von „Object“.)

System_CAPS_pubmethodGetHashCode()

Gibt einen eindeutigen Bezeichner für diese Bookmark-Instanz zurück.(Überschreibt Object.GetHashCode().)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_protmethodMemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.(Geerbt von „Object“.)

System_CAPS_pubmethodToString()

Gibt den Lesezeichennamen für ein benanntes Lesezeichen bzw. die Lesezeichen-ID für ein unbenanntes Lesezeichen zurück.(Überschreibt Object.ToString().)

Wenn eine Aktivität ein Bookmark Lesezeichen erstellt, wechselt sie in den Leerlauf und wartet auf die Fortsetzung von Bookmark. Wenn parallel zu der Aktivität, die Bookmark erstellt hat, andere Aktivitäten vorhanden sind, wird deren Ausführung geplant.

Lesezeichen können von der Hostanwendung mit einer der ResumeBookmark-Überladungen wieder aufgenommen werden.

Weitere Informationen finden Sie unterLesezeichen finden Sie unter Verwenden von WorkflowInvoker und WorkflowApplication, Lesezeichen, und die Lesezeichen [WF-Beispiele] und für Eingabe Aktivität warten [WF-Beispiele] Beispiele.

Im folgenden Beispiel wird eine ReadLine-Aktivität erstellt. Bei der Ausführung erstellt die ReadLine-Aktivität ein Bookmark-Objekt, registriert einen Rückruf und wartet dann darauf, dass das Bookmark-Objekt wieder aufgenommen wird. Bei der Wiederaufnahme weist die ReadLine-Aktivität die Daten zu, die mit dem Bookmark-Objekt an das Result-Argument übergeben wurden.

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

Im folgenden Beispiel wird ein Workflow erstellt, der mit der ReadLine-Aktivität den Namen des Benutzers erfasst und im Konsolenfenster anzeigt. Die Hostanwendung führt die tatsächlichen Aufgaben aus; sie sammelt die Eingaben und übergibt sie an den Workflow, indem das Bookmark wieder aufgenommen wird.

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

When the ReadLine activity is executed, it creates a T:System.Activities.Bookmark named UserName and then waits for the bookmark to be resumed. The host collects the desired data and then resumes the T:System.Activities.Bookmark. The workflow resumes, displays the name, and then completes. Note that no synchronization code is required with regard to resuming the bookmark. A T:System.Activities.Bookmark can only be resumed when the workflow is idle, and if the workflow is not idle, the call to M:System.Activities.WorkflowApplication.ResumeBookmark(System.String,System.Object,System.TimeSpan) blocks until the workflow becomes idle.

.NET Framework
Verfügbar seit 4.0

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Zurück zum Anfang
Anzeigen: