title: Getting SqlChangeMonitor to work
body: <p>I am trying to get the new SqlChangeMonitor feature included in the System.Runtime.Caching namespace to work and am getting some unexpected results.</p>
  
  <p>I have a simple console application setup as:</p>
  
  <pre><code>static void Main(string[] args)
  {
      var cacher = new Cacher();
  
      cacher.Start();
  
      Console.WriteLine("Watching for changes...");
  
      while (true)
      {
          if (cacher.HasData)
          {
              Console.Write(".");
              Thread.Sleep(1000);
          }
          else
          {
              Console.WriteLine();
              Console.WriteLine("Cache EMPTY!");
              Console.ReadLine();
              cacher.Start();
          }
      }
  }
  </code></pre>
  
  <p>The Cacher class is defined as:</p>
  
  <pre><code>public class Cacher
  {
      private MemoryCache cache = new MemoryCache("test");
  
      public Boolean HasData
      {
          get { return cache.Contains("data"); }
      }
  
      public void Start()
      {
          var connectionString = "Data Source=.;Initial Catalog=CachingTest;Integrated Security=True";
          var list = new NameValueCollection();
          var policy = new CacheItemPolicy();
  
          SqlDependency.Start(connectionString);
  
          using (var connection = new SqlConnection(connectionString))
          {
              using (var command = new SqlCommand("SELECT * FROM dbo.Table_1", connection))
              {
                  var dependency = new SqlDependency(command);
  
                  connection.Open();
  
                  var reader = command.ExecuteReader();
  
                  while (reader.Read())
                  {
                      list.Add(reader["Name"].ToString(), reader["Value"].ToString());
                  }
  
                  var monitor = new SqlChangeMonitor(dependency);
  
                  policy.ChangeMonitors.Add(monitor);
              }
  
              cache.Add("data", list, policy);
          }
      }
  }
  </code></pre>
  
  <p>When I run the code, I get the Waiting message and a single dot '.', the one second delay, then the "Cache Empty" message.  This is repeated after I press a key to restart the loop.</p>
  
  <p>What am I missing?</p>