我有一个控制台应用程序。
我想继续观察数据库表中特定列的变化。
我通过互联网阅读,发现 sql 依赖关系很适合我的目的。我开始了解它并做了以下事情:
- 创建一个类。
- 在构造函数中,我调用了静态函数
start
我调用了一个具有所有 sql 依赖项设置的函数。
我的问题
当我使用以下命令运行应用程序时start
单击 Visual Studio 2013,应用程序运行然后停止。However,我需要的是应用程序开始工作并继续监视数据库表中的更改。
请问你能帮帮我吗?
Code:
这是一个非常very简单的c#代码。
public class MyListener
{
public MyListener()
{
SqlDependency.Start(getConnectionString());
this.listen();
}
private string getConnectionString()
{
return ConfigurationManager.ConnectionStrings["popup"].ConnectionString.ToString();
}
private void listen()
{
string query = "SELECT CallerID FROM TransferToSIP WHERE hasBeenRead = 0";
SqlConnection con = new SqlConnection(getConnectionString());
SqlCommand cmd = new SqlCommand(query, con);
con.Open();
using (cmd)
{
SqlDependency dependency = new SqlDependency(cmd);
dependency.OnChange += new
OnChangeEventHandler(OnDependencyChange);
using (SqlDataReader reader = cmd.ExecuteReader())
{
}
}
}
void OnDependencyChange(object sender, SqlNotificationEventArgs e)
{
Console.WriteLine("Roma");
}
void Termination()
{
SqlDependency.Stop(getConnectionString());
Console.Read();
}
问题在于没有重新订阅。您应该致电listen
里面的方法OnDependencyChange
。我知道这很奇怪,但它是 SqlDependency 类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)