Bookmark Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rappresenta un punto in cui un flusso di lavoro o un'attività può attendere passivamente di essere ripresa.
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)
- Ereditarietà
-
Bookmark
- Attributi
- Implementazioni
Esempio
Nell'esempio seguente viene creata un'attività ReadLine
. In caso di esecuzione, l'attività ReadLine
crea un oggetto Bookmark, registra un callback, quindi attende la ripresa dell'oggetto Bookmark. Una volta ripresa, l'attività ReadLine
assegna i dati passati con l'oggetto Bookmark al relativo argomento 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);
}
}
Nell'esempio seguente viene creato un flusso di lavoro che usa l'attività ReadLine
per raccogliere il nome dell'utente e visualizzarlo nella finestra della console. L'applicazione host esegue il lavoro effettivo di rilevamento dell'input e lo passa al flusso di lavoro riprendendo l'oggetto 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();
Quando l'attività ReadLine
viene eseguita, crea un oggetto Bookmark denominato UserName
e attende la ripresa del segnalibro. L'host raccoglie i dati desiderati, quindi riprende l'oggetto Bookmark. Il flusso di lavoro viene ripreso, ne viene visualizzato il nome, quindi viene completato. Si noti che non è necessario alcun codice di sincronizzazione per la ripresa del segnalibro. Un oggetto Bookmark può essere ripreso solo quando il flusso di lavoro è inattivo e, in caso contrario, la chiamata al metodo ResumeBookmark viene bloccata finché il flusso di lavoro non diventa inattivo.
Commenti
Quando un'attività crea un Bookmark, diventa inattiva e attende che Bookmark venga ripreso. Se vi sono altre attività in parallelo con l'attività che ha creato Bookmark, verrà pianificata la loro esecuzione.
I segnalibri possono essere ripresi dall'applicazione host utilizzando uno degli overload ResumeBookmark.
Per altre informazioni sui segnalibri, vedere Uso di WorkflowInvoker e WorkflowApplication e Bookmarks.
Costruttori
Bookmark(String) |
Inizializza una nuova istanza per la classe Bookmark usando il nome specificato. |
Proprietà
Name |
Ottiene il nome del segnalibro. |
Metodi
Equals(Bookmark) |
Determina se il Bookmark corrente e il Bookmark specificato si riferiscono allo stesso punto di continuazione in un flusso di lavoro. |
Equals(Object) |
Determina se il Bookmark corrente e l'oggetto specificato si riferiscono allo stesso punto di continuazione in un flusso di lavoro. |
GetHashCode() |
Restituisce un identificatore univoco per questa istanza Bookmark. |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
ToString() |
Restituisce il nome del segnalibro per un segnalibro denominato o l'ID del segnalibro per un segnalibro senza nome. |