WorkflowInvoker.CancelAsync(Object) Metod
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.
Försöker avbryta arbetsflödet som anropades med angiven userState.
public:
void CancelAsync(System::Object ^ userState);
public void CancelAsync(object userState);
member this.CancelAsync : obj -> unit
Public Sub CancelAsync (userState As Object)
Parametrar
- userState
- Object
Token för arbetsflödet som ska avbrytas.
Exempel
I följande exempel anropas ett arbetsflöde som består av en LongRunningDiceRoll aktivitet. Aktiviteten LongRunningDiceRoll har två utdataargument som representerar resultatet av tärningskaståtgärden. När arbetsflödet har anropats försöker värden avbryta arbetsflödet.
public sealed class LongRunningDiceRoll : Activity
{
public OutArgument<int> D1 { get; set; }
public OutArgument<int> D2 { get; set; }
public LongRunningDiceRoll()
{
this.Implementation = () => new Sequence
{
Activities =
{
new WriteLine
{
Text = "Rolling the dice for 5 seconds."
},
new Delay
{
Duration = TimeSpan.FromSeconds(5)
},
new DiceRoll
{
D1 = new OutArgument<int>(env => this.D1.Get(env)),
D2 = new OutArgument<int>(env => this.D2.Get(env))
}
}
};
}
}
AutoResetEvent syncEvent = new AutoResetEvent(false);
WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());
invoker.InvokeCompleted += delegate(object sender, InvokeCompletedEventArgs args)
{
if (args.Cancelled)
{
Console.WriteLine("The workflow was cancelled.");
}
else if (args.Error != null)
{
Console.WriteLine("Exception: {0}\n{1}",
args.Error.GetType().FullName,
args.Error.Message);
}
else
{
Console.WriteLine("The two dice are {0} and {1}.",
args.Outputs["D1"], args.Outputs["D2"]);
}
syncEvent.Set();
};
string userState = "CancelAsync Example";
invoker.InvokeAsync(userState);
Console.WriteLine("Waiting for the workflow to complete.");
Thread.Sleep(TimeSpan.FromSeconds(1));
Console.WriteLine("Attempting to cancel the workflow.");
invoker.CancelAsync(userState);
// Wait for the workflow to complete.
syncEvent.WaitOne();
Console.WriteLine("The workflow is either completed or cancelled.");
Kommentarer
Endast ett arbetsflöde som anropas av en av de InvokeAsync överlagringar som tar en userState parameter kan avbrytas.
Om annulleringen lyckas är egenskapen för den Cancelled som skickas InvokeCompletedEventArgs till InvokeCompleted hanteraren inställd på true. Annars är den inställd på false.