Bookmark Třída

Definice

Představuje bod, kdy může pracovní postup nebo aktivita pasivní čekání na obnovení.

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)
Dědičnost
Bookmark
Atributy
Implementuje

Příklady

V následujícím příkladu ReadLine se vytvoří aktivita. Při spuštění ReadLine aktivita vytvoří Bookmark, zaregistruje zpětné volání a pak čeká, až bude Bookmark obnoveno. Když se obnoví, aktivita ReadLine přiřadí data, která byla předána s Bookmark, ke svému argumentu Result.

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

V následujícím příkladu se vytvoří pracovní postup, který pomocí ReadLine aktivity shromáždí jméno uživatele a zobrazí ho v okně konzoly. Hostitelská aplikace provádí skutečnou práci shromažďování vstupu a předává ji pracovnímu postupu obnovením Bookmark.

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

Když se ReadLine aktivita spustí, nejprve pojmenuje Bookmark na UserName a pak počká, až se záložka obnoví. Hostitel shromáždí požadovaná data a pak obnoví Bookmark. Pracovní postup se obnoví, zobrazí název a pak se dokončí. Mějte na paměti, že k obnovení záložky není nutný žádný synchronizační kód. A Bookmark lze obnovit pouze když je pracovní postup nečinný, a pokud pracovní postup není nečinný, volání ResumeBookmark blokuje, dokud pracovní postup nebude nečinný.

Poznámky

Když aktivita vytvoří Bookmark, stane se nečinným a počká, Bookmark až se obnoví. Pokud existují další aktivity paralelně s aktivitou, která vytvořila Bookmark, budou naplánovány pro spuštění.

Záložky může hostitelská aplikace obnovit pomocí jednoho z ResumeBookmark přetížení.

Další informace o záložkách naleznete v tématu Použití WorkflowInvoker a WorkflowApplication a Záložek.

Konstruktory

Name Description
Bookmark(String)

Inicializuje novou instanci Bookmark třídy pomocí zadaného názvu.

Vlastnosti

Name Description
Name

Získá název záložky.

Metody

Name Description
Equals(Bookmark)

Určuje, zda aktuální Bookmark a zadaný Bookmark odkaz odkazují na stejný bod pokračování v pracovním postupu.

Equals(Object)

Určuje, zda aktuální Bookmark a zadaný objekt odkazují na stejný bod pokračování v pracovním postupu.

GetHashCode()

Vrátí jedinečný identifikátor pro tuto Bookmark instanci.

GetType()

Získá Type aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ToString()

Vrátí název záložky pro pojmenovanou záložku nebo ID záložky pro nepojmenovanou záložku.

Platí pro