WorkflowInvoker.CancelAsync(Object) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Versucht, den Workflow abzubrechen, der mit dem angegebenen userState
aufgerufen wurde.
public:
void CancelAsync(System::Object ^ userState);
public void CancelAsync (object userState);
member this.CancelAsync : obj -> unit
Public Sub CancelAsync (userState As Object)
Parameter
- userState
- Object
Das Token für den abzubrechenden Workflow.
Beispiele
Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer LongRunningDiceRoll
-Aktivität besteht. Die LongRunningDiceRoll
-Aktivität verfügt über zwei Ausgabeargumente, die die Ergebnisse des Würfelvorgangs darstellen. Nach dem Aufrufen des Workflows versucht der Host, den Workflow abzubrechen.
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 == true)
{
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.");
Hinweise
Nur ein Workflow, der von einer der InvokeAsync-Überladungen, die einen userState
-Parameter annehmen kann, aufgerufen wurde, kann abgebrochen werden.
Wenn der Abbruch erfolgreich ist, wird die Cancelled An den InvokeCompleted Handler übergebene -Eigenschaft InvokeCompletedEventArgs auf true
festgelegt. Andernfalls wird sie auf false
festgelegt.