Je suis nouveau sur Windows Workflow et j'essaye d'écrire un processus de longue durée.
J'essaie également de limiter la durée de ce processus.
J'appelle WorkflowInvoker.Invoke pour déclencher mon flux de travail en lui passant un peu de temps pour le test.Workflow 4 CodeActivity ne lance pas TimeoutException
Si j'essaie certaines activités, cela semble fonctionner parfaitement.
Mais si j'utilise un CodeActivity, il semble ignorer complètement mon timeout.
Pourquoi est-ce? Et comment puis-je provoquer l'expiration de mon CodeActivity si cela prend trop de temps?
Un exemple de travail avec une activité de retard:
(Dans cet exemple, le TimeoutException est jeté)
Activity wf = new Sequence()
{
Activities =
{
new Delay()
{
Duration = TimeSpan.FromSeconds(10)
},
}
};
try
{
WorkflowInvoker.Invoke(wf, TimeSpan.FromSeconds(5));
}
catch (TimeoutException ex)
{
Console.WriteLine(ex.Message);
}
Un exemple en essayant d'utiliser un CodeActivity:
(Dans cet exemple, le TimeoutException n'est pas jeté)
public class LongActivity : CodeActivity
{
protected override void Execute(CodeActivityContext context)
{
Thread.Sleep(TimeSpan.FromSeconds(10));
}
}
Activity wf = new Sequence()
{
Activities =
{
new LongActivity()
}
};
try
{
WorkflowInvoker.Invoke(wf, TimeSpan.FromSeconds(5));
}
catch (TimeoutException ex)
{
Console.WriteLine(ex.Message);
}