Beispiel #1
0
        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);
        }