Cześć,
Mam do zaimplementowania rozwiązanie opisanie w tym wątku Service Broker i application notification . Chcę wypróbować SqlDependency i mam problem z poprawną implementacją tego rozwiązania, aby aplikacja konsolowa działała cały czas w tle i wykonywała pewne akcje tylko w momencie wystąpienia eventu OnChange. Na ten moment aplikacja przechodzi raz i wyłącza się. Co robię źle?
public class Listener
{
const string sampleConnectionString = @"connection string";
const string notificationQuery = "SELECT [ID],[Name] FROM [dbo].[tblUsers]";
public Listener()
{
SqlDependency.Start(sampleConnectionString);
Listen();
}
private void Listen()
{
using (var connection = new SqlConnection(sampleConnectionString))
{
SqlCommand command = new SqlCommand(notificationQuery, connection);
connection.Open();
using (command)
{
SqlDependency dependency = new SqlDependency(command);
dependency.OnChange += new OnChangeEventHandler(OnDependencyChange);
using (SqlDataReader reader = command.ExecuteReader())
{
}
}
}
}
private void OnDependencyChange(object sender, SqlNotificationEventArgs e)
{
var s = sender;
var eventArgs = e;
Console.WriteLine("Record added");
Listen();
}
}