我是 Windows 工作流的新手,正在尝试编写一个长时间运行的进程。
我也试图限制这个过程可以运行多长时间。
我正在调用 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);
}