private void AddWithSqlDependency(string key, TValue item, SqlCacheDependency sqlDependency) { if (key == null) { throw new ArgumentNullException(nameof(key)); } if (sqlDependency == null) { throw new ArgumentNullException(nameof(sqlDependency)); } _Cache.SetObject(key, new CacheItem <TValue>() { AbsoluteExpiration = DateTime.MinValue, SlidingExpiration = TimeSpan.Zero, Item = item }); Policy.Handle <Exception>() .RetryForever() .Execute(() => { // subscribe to sql dependency _channel = new ChangeTrackingChannelHelper((ISqlChangeCallback)this).OpenChannel(); _channel.Subscribe(key, sqlDependency.TableName); } ); // subscribe client for callback SubscribeCallback(key, sqlDependency.Callback); }