WorkflowInvoker.CancelAsync(Object) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Pogingen om de werkstroom te annuleren die is aangeroepen met de opgegeven userState.
public:
void CancelAsync(System::Object ^ userState);
public void CancelAsync(object userState);
member this.CancelAsync : obj -> unit
Public Sub CancelAsync (userState As Object)
Parameters
- userState
- Object
Het token voor de werkstroom dat moet worden geannuleerd.
Voorbeelden
In het volgende voorbeeld wordt een werkstroom aangeroepen die bestaat uit een LongRunningDiceRoll activiteit. De LongRunningDiceRoll activiteit heeft twee uitvoerargumenten die de resultaten van de dobbelsteendraaibewerking vertegenwoordigen. Zodra de werkstroom is aangeroepen, probeert de host de werkstroom te annuleren.
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.");
Opmerkingen
Alleen een werkstroom die wordt aangeroepen door een van de InvokeAsync overbelastingen waarvoor een userState parameter wordt gebruikt, kan worden geannuleerd.
Als de annulering slaagt, wordt de eigenschap van de InvokeCompletedEventArgsCancelled doorgegeven aan de InvokeCompleted handler ingesteld op true; anders wordt deze ingesteld op false.