Bookmark Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Representerar en punkt där ett arbetsflöde eller en aktivitet passivt kan vänta på att återupptas.
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)
- Arv
-
Bookmark
- Attribut
- Implementeringar
Exempel
I följande exempel skapas en ReadLine aktivitet. När ReadLine-aktiviteten körs, skapas en Bookmark, ett återanrop registreras, och sedan väntar man på att Bookmark ska återupptas. När aktiviteten återupptas tilldelar den de data som skickades med ReadLine till sitt Bookmark argument.
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);
}
}
I följande exempel skapas ett arbetsflöde som använder ReadLine aktiviteten för att samla in användarens namn och visa det i konsolfönstret. Värdprogrammet utför det faktiska arbetet med att samla in inmatning och skickar det till arbetsflödet genom att återuppta 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();
När ReadLine-aktiviteten körs, skapas ett objekt av typen Bookmark med namnet UserName och väntar sedan på att bokmärket ska återupptas. Värden samlar in önskade data och sedan återupptar Bookmark. Arbetsflödet återupptas, visar namnet och slutförs sedan. Observera att ingen synkroniseringskod krävs för att återuppta bokmärket. A Bookmark kan bara återupptas när arbetsflödet är inaktivt, och om arbetsflödet inte är inaktivt blockeras anropet till ResumeBookmark tills arbetsflödet blir inaktivt.
Kommentarer
När en aktivitet skapar en Bookmarkblir den inaktiv och väntar på Bookmark att återupptas. Om det finns andra aktiviteter parallellt med aktiviteten som skapade Bookmarkkommer de att schemaläggas för körning.
Bokmärken kan återupptas av värdprogrammet med hjälp av en av överlagringarna ResumeBookmark .
Mer information om bokmärken finns i Använda WorkflowInvoker och WorkflowApplication och Bokmärken.
Konstruktorer
| Name | Description |
|---|---|
| Bookmark(String) |
Initierar en ny instans av Bookmark klassen med det angivna namnet. |
Egenskaper
| Name | Description |
|---|---|
| Name |
Hämtar bokmärkets namn. |
Metoder
| Name | Description |
|---|---|
| Equals(Bookmark) |
Avgör om aktuell Bookmark och angiven Bookmark refererar till samma fortsättningspunkt i ett arbetsflöde. |
| Equals(Object) |
Avgör om det aktuella Bookmark och angivna objektet refererar till samma fortsättningspunkt i ett arbetsflöde. |
| GetHashCode() |
Returnerar en unik identifierare för den här Bookmark instansen. |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ToString() |
Returnerar bokmärkets namn för ett namngivet bokmärke eller bokmärkes-ID för ett namnlöst bokmärke. |