Я новичок в Windows Workflow и пытаюсь написать длительный процесс.
Я также пытаюсь ограничить продолжительность этого процесса.
Я звоню WorkflowInvoker.Invoke, чтобы запустить мой рабочий процесс, передавая его.небольшой промежуток времени для тестирования.
Если я попытаюсь выполнить определенные действия, это, кажется, будет работать идеально.
Но если я использую CodeActivity, похоже, он полностью игнорирует мое время ожидания.
Почемуэто?И как я могу заставить тайм-аут моей CodeActivity, если это занимает слишком много времени?
Пример работы с Задержкой:
(В этом примере выбрасывается исключение TimeOutException)
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);
}
Пример попытки использования CodeActivity:
(в этом примере исключение TimeOutException не генерируется)
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);
}