Bookmark Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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. |