Comment puis-je vérifier depuis mon NativeActivity si la méthode 'Annuler' de l'application de workflow a été invoquée?WF: Vérifie si l'application de workflow a été annulée à partir d'une activité personnalisée
J'ai essayé d'utiliser la propriété 'IsCancellationRequested' du contexte mais cela ne fait pas grand-chose.
Voici mon exemple:
public class Program
{
static void Main(string[] args)
{
ManualResetEventSlim mre = new ManualResetEventSlim(false);
WorkflowApplication app = new WorkflowApplication(new Sequence() { Activities = {new tempActivity(), new tempActivity() } });
app.Completed += delegate(WorkflowApplicationCompletedEventArgs e)
{
mre.Set();
};
app.Run(TimeSpan.MaxValue);
Thread.Sleep(2000);
app.BeginCancel(null,null);
mre.Wait();
}
}
public class tempActivity : NativeActivity
{
protected override void Execute(NativeActivityContext context)
{
Console.WriteLine("Exec tempActivity");
for (int i = 0; i < 10; i++)
{
Thread.Sleep(1000);
Console.Write(".");
if (context.IsCancellationRequested)
return;
}
}
}
Merci!
I don 't attendre à ce que l'opération d'annulation interrompra le fil conducteur de la méthode d'exécution mais je veux obtenir une sorte de notification que la l'application de workflow a été annulée. pourquoi la propriété 'IsCancellationRequested' n'est pas définie sur true? –
Il est défini sur true dès que vous modifiez le moteur d'exécution. Tant que vous ne revenez pas de l'Execute(), le runtime n'obtient pas de changement pour faire quoi que ce soit. – Maurice
Je ne comprends toujours pas pourquoi (il ne pouvait pas fonctionner à partir d'un fil différent?). peut-être pourriez-vous expliquer un peu plus ou ajouter des liens supplémentaires. Merci! –