我是新的Windows工作流程,並試圖編寫一個長時間運行的過程。
我也試圖限制這個過程可以運行多長時間。
我打電話給WorkflowInvoker.Invoke來觸發我的工作流,通過一個小時間段進行測試。工作流程4 CodeActivity不拋出TimeoutException
如果我嘗試這個特定的活動,這似乎完美。
但是,如果我使用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);
}