42 lines
1.4 KiB
C#
42 lines
1.4 KiB
C#
|
// <copyright file="SqlChangeMonitor.cs" company="Microsoft">
|
||
|
// Copyright (c) 2009 Microsoft Corporation. All rights reserved.
|
||
|
// </copyright>
|
||
|
using System;
|
||
|
using System.Data.SqlClient;
|
||
|
using System.Globalization;
|
||
|
namespace System.Runtime.Caching {
|
||
|
public sealed class SqlChangeMonitor : ChangeMonitor {
|
||
|
private String _uniqueId;
|
||
|
private SqlDependency _sqlDependency;
|
||
|
|
||
|
public override String UniqueId { get { return _uniqueId; } }
|
||
|
|
||
|
private SqlChangeMonitor() {} // hide default .ctor
|
||
|
|
||
|
public SqlChangeMonitor(SqlDependency dependency) {
|
||
|
if (dependency == null) {
|
||
|
throw new ArgumentNullException("dependency");
|
||
|
}
|
||
|
bool dispose = true;
|
||
|
try {
|
||
|
_sqlDependency = dependency;
|
||
|
_sqlDependency.OnChange += new OnChangeEventHandler(OnDependencyChanged);
|
||
|
_uniqueId = Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture);
|
||
|
dispose = false;
|
||
|
}
|
||
|
finally {
|
||
|
InitializationComplete();
|
||
|
if (dispose) {
|
||
|
Dispose();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
protected override void Dispose(bool disposing) {}
|
||
|
|
||
|
private void OnDependencyChanged(Object sender, SqlNotificationEventArgs e) {
|
||
|
OnChanged(null);
|
||
|
}
|
||
|
}
|
||
|
}
|