为什么请求 TestTimeoutSync 方法后为什么 OnTimeout 方法的输出语句并没有被打印出来?
看起来就像是设置的超时根本没有生效一样,请问如何解决?
[HttpGet]
[Route("TestTimeoutSync")]
public string TestTimeoutSync()
{
ResiliencePipeline pipeline = new ResiliencePipelineBuilder()
.AddTimeout(new TimeoutStrategyOptions
{
TimeoutGenerator = args =>
{
return new ValueTask<TimeSpan>(TimeSpan.FromSeconds(1));
},
OnTimeout = args =>
{
Console.WriteLine($"Execution timed out after {args.Timeout.TotalSeconds} seconds.");
return default;
}
})
.Build();
pipeline.Execute(static () => {
var res = TheadSleep();
Console.WriteLine(res);
return res;
});
return "TestTimeoutSync timeout!";
}
public static string TheadSleep()
{
Thread.Sleep(2000);
return "This is TheadSleep";
}