// // Copyright (c) 2009 Microsoft Corporation. All rights reserved. // 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); } } }