Udostępnij za pośrednictwem


Bookmark Klasa

Definicja

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.

Dotyczy