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 ripreso.
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 . Quando viene eseguita, l'attività ReadLine crea un Bookmark, registra un callback e quindi attende che il Bookmark venga ripreso. Quando viene ripresa, l'attività ReadLine assegna i dati passati con l'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 reale lavoro di raccolta dell'input e lo passa al flusso di lavoro riprendendo il processo 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 viene eseguita l'attività ReadLine, crea un Bookmark denominato UserName e quindi attende che il segnalibro venga ripreso. L'host raccoglie i dati desiderati e quindi riprende il Bookmark. Il flusso di lavoro riprende, visualizza il nome e quindi viene completato. Si noti che non è necessario alcun codice di sincronizzazione per quanto riguarda la ripresa del segnalibro. Un Bookmark può essere ripreso solo quando il flusso di lavoro è inattivo e, se il flusso di lavoro non è inattivo, la chiamata a ResumeBookmark blocca fino a quando il flusso di lavoro diventa inattivo.
Commenti
Quando un'attività crea un Bookmarkoggetto , diventa inattiva e attende la ripresa dell'oggetto Bookmark . Se sono presenti altre attività in parallelo con l'attività che ha creato , verranno pianificate per l'esecuzione Bookmark.
I segnalibri possono essere ripresi dall'applicazione host usando uno degli ResumeBookmark overload.
Per altre informazioni sui segnalibri, vedere Uso di WorkflowInvoker e WorkflowApplication e Segnalibri.
Costruttori
| Nome | Descrizione |
|---|---|
| Bookmark(String) |
Inizializza una nuova istanza della Bookmark classe utilizzando il nome specificato. |
Proprietà
| Nome | Descrizione |
|---|---|
| Name |
Ottiene il nome del segnalibro. |
Metodi
| Nome | Descrizione |
|---|---|
| Equals(Bookmark) |
Determina se l'oggetto corrente Bookmark e l'oggetto specificato Bookmark fanno riferimento allo stesso punto di continuazione in un flusso di lavoro. |
| Equals(Object) |
Determina se l'oggetto corrente Bookmark e l'oggetto specificato fanno riferimento allo stesso punto di continuazione in un flusso di lavoro. |
| GetHashCode() |
Restituisce un identificatore univoco per questa Bookmark istanza. |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| ToString() |
Restituisce il nome del segnalibro per un segnalibro denominato o l'ID segnalibro per un segnalibro senza nome. |