Sdílet prostřednictvím


Bookmark Třída

Definice

Představuje bod, ve kterém může pracovní postup nebo aktivita pasivně čekat 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 se ReadLine vytvoří aktivita. Po spuštění ReadLine aktivita vytvoří Bookmark, zaregistruje zpětné volání a pak počká na Bookmark obnovení. Po obnovení aktivita přiřadí data, ReadLine která byla předána spolu s argumentem 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);  
    }  
}  

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 provede skutečnou práci na shromáždění vstupu a předá ho pracovnímu postupu obnovením Bookmarkpříkazu .

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í, vytvoří pojmenovanou BookmarkUserName a pak počká na obnovení záložky. Hostitel shromáždí požadovaná data a pak obnoví .Bookmark Pracovní postup se obnoví, zobrazí název a pak se dokončí. Všimněte si, že pro obnovení záložky se nevyžaduje žádný synchronizační kód. A Bookmark lze obnovit pouze v případě, že pracovní postup je nečinný, a pokud pracovní postup není nečinný, volání ResumeBookmark bloků, dokud pracovní postup nebude nečinný.

Poznámky

Když aktivita vytvoří Bookmark, začne být nečinná a čeká Bookmark na obnovení. Pokud jsou paralelně s aktivitou, která vytvořila Bookmark, budou naplánovány další aktivity.

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

Další informace o záložkách najdete v tématu Použití WorkflowInvokeru a WorkflowApplication a Bookmarks.

Konstruktory

Bookmark(String)

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

Vlastnosti

Name

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

Metody

Equals(Bookmark)

Určuje, zda aktuální Bookmark a zadaný Bookmark odkaz 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á aktuální Type instanci.

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

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

(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