using System; using System.Net.Http; using System.Threading; namespace FastGithub.Http { /// /// 表示自主管理生命周期的的HttpMessageHandler /// sealed class LifetimeHttpHandler : DelegatingHandler { private readonly Timer timer; /// /// 具有生命周期的HttpHandler /// /// HttpHandler /// 拦截器的生命周期 /// 失效回调 public LifetimeHttpHandler(HttpMessageHandler handler, TimeSpan lifeTime, Action deactivateAction) : base(handler) { this.timer = new Timer(this.OnTimerCallback, deactivateAction, lifeTime, Timeout.InfiniteTimeSpan); } /// /// timer触发时 /// /// private void OnTimerCallback(object? state) { this.timer.Dispose(); ((Action)(state!))(this); } /// /// 这里不释放资源 /// /// protected override void Dispose(bool disposing) { } } }