Bookmark Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Representa um ponto em que um fluxo de trabalho ou atividade pode esperar passivamente para ser retomado.
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)
- Herança
-
Bookmark
- Atributos
- Implementações
Exemplos
No exemplo seguinte, é criada uma ReadLine atividade. Quando executada, a ReadLine atividade cria um Bookmark, regista um retorno de chamada e depois aguarda que o Bookmark seja retomado. Quando é retomada, a ReadLine atividade atribui os dados que foram passados com o Bookmark ao seu Result argumento.
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);
}
}
No exemplo seguinte, é criado um fluxo de trabalho que utiliza a ReadLine atividade para recolher o nome do utilizador e exibi-lo na janela da consola. O aplicativo host executa o trabalho real de coleta da entrada e a passa para o fluxo de trabalho retomando o 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 a ReadLine atividade é executada, ela cria um Bookmark chamado UserName e, em seguida, aguarda pela retoma do marcador. O host coleta os dados desejados e, em seguida, retoma o Bookmark. O fluxo de trabalho retoma, exibe o nome e depois conclui. Observe que nenhum código de sincronização é necessário em relação a retomar o marcador. A Bookmark só pode ser retomado quando o fluxo de trabalho estiver ocioso e, se o fluxo de trabalho não estiver ocioso, a chamada para ResumeBookmark será bloqueada até que o fluxo de trabalho fique ocioso.
Observações
Quando uma atividade cria um Bookmark, fica inativa e espera que o Bookmark seja retomado. Se existirem outras atividades em paralelo com a atividade que criou o Bookmark, elas serão agendadas para execução.
Os marcadores podem ser retomados pela aplicação anfitriã usando uma das ResumeBookmark sobrecargas.
Para mais informações sobre favoritos, consulte Utilização do WorkflowInvoker e WorkflowApplication e Marcadores.
Construtores
| Name | Description |
|---|---|
| Bookmark(String) |
Inicializa uma nova instância da Bookmark classe usando o nome especificado. |
Propriedades
| Name | Description |
|---|---|
| Name |
Fica com o nome do marcador. |
Métodos
| Name | Description |
|---|---|
| Equals(Bookmark) |
Determina se a corrente Bookmark e a especificada Bookmark se referem ao mesmo ponto de continuação num fluxo de trabalho. |
| Equals(Object) |
Determina se o objeto atual Bookmark e o objeto especificado se referem ao mesmo ponto de continuação num fluxo de trabalho. |
| GetHashCode() |
Devolve um identificador único para esta Bookmark instância. |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve o nome do marcador para um marcador nomeado ou o ID do marcador para um marcador sem nome. |