1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
// <copyright file="DependencyChangeMonitor.cs" company="Microsoft">
// Copyright (c) 2009 Microsoft Corporation. All rights reserved.
// </copyright>
#if USE_MEMORY_CACHE
using System;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.Caching;
using System.Web.Util;
namespace System.Web.Caching {
internal sealed class DependencyChangeMonitor: ChangeMonitor, ICacheDependencyChanged {
private CacheDependency _dependency;
public override string UniqueId {
get {
return _dependency.GetUniqueID();
}
}
internal DependencyChangeMonitor(CacheDependency dependency) {
if (dependency == null) {
throw new ArgumentNullException("dependency");
}
if (!dependency.Use()) {
throw new InvalidOperationException(
SR.GetString(SR.Cache_dependency_used_more_that_once));
}
_dependency = dependency;
_dependency.SetCacheDependencyChanged(this);
if (_dependency.HasChanged) {
OnChanged(null);
}
InitializationComplete();
}
void ICacheDependencyChanged.DependencyChanged(Object sender, EventArgs e) {
OnChanged(null);
}
[SuppressMessage("Microsoft.Usage", "CA2215:DisposeMethodsShouldCallBaseClassDispose", Justification="suppressed because fxcop is suffering from despotism")]
protected override void Dispose(bool disposing) {
if (disposing) {
if (_dependency != null) {
_dependency.DisposeInternal();
}
}
}
}
}
#endif
|