今天我开始学习SqlDependency及其所有功能,我慢慢地在我的WCF服务上测试它。到目前为止,通过几个教程我已经完成了所有工作,但我陷入了非常关键的一步。
我的问题是(我知道我还不了解整个SqlDependency概念),在我的生活中无法弄清楚如何在我的WCF服务之后从我的客户端WPF应用程序发送回调{{ 1}}事件已被触发。我可能会在我的问题中措辞错误,所以请原谅。
这里我开始我的SqlDependency:
OnChange
这是我的RegisterDependency方法:
private string dependencyResult = "";
public void StartListener()
{
SqlDependency.Stop(ConfigurationManager.ConnectionStrings["TruckDbWcf"].ConnectionString);
SqlDependency.Start(ConfigurationManager.ConnectionStrings["TruckDbWcf"].ConnectionString);
RegisterDependency();
}
我的 OnChange 事件:
public void RegisterDependency()
{
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["TruckDbWcf"].ConnectionString);
SqlCommand command = new SqlCommand();
command.Connection = connection;
command.Connection.Open();
command.CommandType = CommandType.Text;
command.CommandText = "SELECT [Id], [Title] FROM [dbo].[Feeds];";
command.Notification = null;
SqlDependency dependency = new SqlDependency(command);
dependency.OnChange += SqlDependencyOnChange;
command.ExecuteReader();
command.Connection.Close();
}
我想从我的WPF应用调用我的private void SqlDependencyOnChange(object sender, SqlNotificationEventArgs eventArgs)
{
SqlDependency dependency = sender as SqlDependency;
dependency.OnChange -= SqlDependencyOnChange;
StartListener();
}
方法,所以我使用了
StartListener()
我通过按钮点击事件从我的WPF应用程序中调用该方法:
[OperationContract]
void StartListener();
所以我的问题是:如何从我的服务中获取通知/消息/回调以告知我service.StartListenerAsync();
表中的数据已更改?我不知道如何做到这一点,我觉得有点愚蠢,我现在无法弄清楚这一点。有人可以帮助我吗?
我想在我的WPF应用程序的标签中显示一条消息,表明数据发生了变化。
编辑 - 我还启用了Service Broker并在我的数据库中设置了所需的权限。