Nyelv

Bookmark Osztály

Definíció

Azt a pontot jelöli, ahol egy munkafolyamat vagy tevékenység passzívan várhat a folytatásra.

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)
Öröklődés
Bookmark
Attribútumok
Megvalósítás

Példák

Az alábbi példában létrejön egy ReadLine tevékenység. A végrehajtáskor a ReadLine tevékenység létrehoz egy Bookmark, regisztrál egy visszahívást, majd megvárja a Bookmark folytatását. A folytatáskor a ReadLine tevékenység hozzárendeli azokat az adatokat, amelyeket az Bookmark által továbbított Result argumentumnak.

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

Az alábbi példában létrejön egy munkafolyamat, amely a ReadLine tevékenység használatával gyűjti össze a felhasználó nevét, és megjeleníti azt a konzolablakban. A gazdaalkalmazás elvégzi a bemeneti adatok gyűjtésének tényleges munkáját, és átadja azt a munkafolyamatnak a Bookmarkfolytatással.

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

ReadLine A tevékenység végrehajtásakor létrehoz egy `Bookmark` nevű `UserName`-t, majd megvárja a könyvjelző folytatását. A kiszolgáló összegyűjti a kívánt adatokat, majd folytatja a Bookmark. A munkafolyamat folytatódik, megjeleníti a nevet, majd befejeződik. Vegye figyelembe, hogy a könyvjelző újbóli használatához nincs szükség szinkronizálási kódra. A Bookmark csak akkor folytatható, ha a munkafolyamat tétlen. Amennyiben a munkafolyamat nem tétlen, a ResumeBookmark hívás blokkolódik, amíg a munkafolyamat tétlenné nem válik.

Megjegyzések

Amikor egy tevékenység létrehoz egy Bookmarktevékenységet, tétlenné válik, és megvárja a Bookmark folytatást. Ha a tevékenységet létrehozó Bookmarktevékenységgel párhuzamosan más tevékenységek is vannak, azok végrehajtásra lesznek ütemezve.

A könyvjelzőket a gazdaalkalmazás az egyik ResumeBookmark túlterheléssel folytathatja.

A könyvjelzőkről további információt a WorkflowInvoker és a WorkflowApplication és a Könyvjelzők használata című témakörben talál.

Konstruktorok

Name Description
Bookmark(String)

Inicializálja az Bookmark osztály új példányát a megadott névvel.

Tulajdonságok

Name Description
Name

Lekéri a könyvjelző nevét.

Metódusok

Name Description
Equals(Bookmark)

Meghatározza, hogy az aktuális Bookmark és a megadott Bookmark hivatkozás ugyanarra a folytatási pontra hivatkozik-e egy munkafolyamatban.

Equals(Object)

Meghatározza, hogy az aktuális Bookmark és a megadott objektum ugyanarra a folytatási pontra hivatkozik-e egy munkafolyamatban.

GetHashCode()

Egyedi azonosítót ad vissza ehhez a Bookmark példányhoz.

GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ToString()

Egy elnevezett könyvjelző vagy egy névtelen könyvjelző könyvjelző-azonosítójának nevét adja vissza.

A következőre érvényes: