/// <summary> /// 添加要清除的httpHandler /// </summary> /// <param name="handler">httpHandler</param> public void Add(LifetimeHttpHandler handler) { var entry = new TrackingEntry(handler); this.trackingEntries.Enqueue(entry); // 从0变为1,要启动清理作业 if (Interlocked.Increment(ref this.trackingEntryCount) == 1) { this.StartCleanup(); } }
/// <summary> /// 当有httpHandler失效时 /// </summary> /// <param name="handler">httpHandler</param> private void OnHttpHandlerDeactivate(LifetimeHttpHandler handler) { // 切换激活状态的记录的实例 this.lifeTimeHttpHandlerLazy = new Lazy <LifetimeHttpHandler>(this.CreateHttpHandler, true); this.httpHandlerCleaner.Add(handler); }
/// <summary> /// 监视生命周期的记录 /// </summary> /// <param name="handler">激活状态的httpHandler</param> public TrackingEntry(LifetimeHttpHandler handler) { this.disposable = handler.InnerHandler; this.weakReference = new WeakReference(handler); }