【发布时间】:2022-01-14 03:57:22
【问题描述】:
我用处理程序设置了一个 CancellationTokenSource
public class AppTimeout
{
public async Task Invoke(HttpContext httpContext)
{
var cancellationTokenSource = CancellationTokenSource.CreateLinkedTokenSource(httpContext.RequestAborted);
cancellationTokenSource.CancelAfter(myTimestamp);
cancellationTokenSource.Token.Register(() =>
{
log.info("...");
});
await _next(httpContext);
}
}
我的问题是,如果我只有一个超时请求,则对 Invoke 方法已处理的所有请求都会调用 cancelTokenSource.Token 的回调,即使是已经在正确时间完成的请求
您知道我为什么会遇到这种行为以及如何解决它吗?
【问题讨论】:
-
嗯,没有什么可以处理取消令牌源,垃圾收集不会立即发生,所以我预计它会在请求完成后超时。
标签: c# .net-5 cancellationtokensource