Bookmark Clase

Definición

Representa un punto en que un flujo de trabajo o actividad puede esperar pasivamente a ser reanudada.

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 actividad ReadLine. 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 lo haga, la actividad ReadLine asigna los datos que se pasaron con 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 recopilación de datos y los pasa al flujo de trabajo al reanudar 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 denominado 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, finaliza. Tenga en cuenta que no se necesita el código de sincronización con respecto a la reanudación del marcador. Se puede reanudar Bookmark sólo cuando el flujo de trabajo está inactivo y, si no lo está, la llamada a ResumeBookmark se bloquea hasta que el flujo de trabajo se vuelve inactivo.

Comentarios

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

Los marcadores pueden reanudarse según la aplicación host mediante una de las sobrecargas de ResumeBookmark.

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

Constructores

Bookmark(String)

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

Propiedades

Name

Obtiene el nombre del marcador.

Métodos

Equals(Bookmark)

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

Equals(Object)

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

GetHashCode()

Devuelve un identificador único para esta instancia de Bookmark.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve el nombre de un marcador con nombre o la identificación de marcador si se trata de un marcador sin nombre.

Se aplica a