Bookmark Clase

Definición

Representa un punto en el que un flujo de trabajo o actividad puede esperar pasivamente a reanudarse.

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)
Herencia
Bookmark
Atributos
Implementaciones

Ejemplos

En el ejemplo siguiente, se crea una ReadLine actividad. Cuando se ejecuta, la actividad ReadLine crea un Bookmark, registra una devolución de llamada y, a continuación, espera a que se reanude Bookmark. Cuando se reanuda, la ReadLine actividad asigna los datos que se pasaron con el Bookmark a su argumento 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);
    }
}

En el ejemplo siguiente, se crea un flujo de trabajo que usa la ReadLine actividad para recopilar el nombre del usuario y mostrarlo en la ventana de la consola. La aplicación host realiza el trabajo real de recopilar la entrada y la pasa al flujo de trabajo mediante la reanudación de 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();

Cuando se ejecuta la actividad ReadLine, crea un Bookmark llamado UserName y, a continuación, espera a que se reanude el marcador. El host recopila los datos deseados y, a continuación, reanuda Bookmark. El flujo de trabajo se reanuda, muestra el nombre y, a continuación, se completa. Tenga en cuenta que no se requiere ningún código de sincronización con respecto a reanudar el marcador. Bookmark solo se puede reanudar cuando el flujo de trabajo está inactivo y, si el flujo de trabajo no está inactivo, la llamada a ResumeBookmark queda bloqueada hasta que el flujo de trabajo se vuelve inactivo.

Comentarios

Cuando una actividad crea un Bookmarkelemento , se vuelve inactivo y espera Bookmark a que se reanude . Si hay otras actividades en paralelo con la actividad que creó , Bookmarkse programarán para su ejecución.

La aplicación host puede reanudar los marcadores mediante una de las ResumeBookmark sobrecargas.

Para obtener más información sobre los marcadores, consulte Uso de WorkflowInvoker y WorkflowApplication y Bookmarks.

Constructores

Nombre Description
Bookmark(String)

Inicializa una nueva instancia de la Bookmark clase con el nombre especificado.

Propiedades

Nombre Description
Name

Obtiene el nombre del marcador.

Métodos

Nombre Description
Equals(Bookmark)

Determina si el objeto actual Bookmark y el especificado Bookmark hacen referencia al mismo punto de continuación de un flujo de trabajo.

Equals(Object)

Determina si el objeto actual Bookmark y el objeto especificado hacen referencia al mismo punto de continuación de un flujo de trabajo.

GetHashCode()

Devuelve un identificador único para esta Bookmark instancia.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
ToString()

Devuelve el nombre del marcador para un marcador con nombre o el identificador de marcador para un marcador sin nombre.

Se aplica a