-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
Copy pathDependencyChangeMonitor.cs
50 lines (45 loc) · 1.68 KB
/
DependencyChangeMonitor.cs
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