如何在WCF中使用SqlDependency来通知WPF应用程序

时间:2016-08-04 20:02:41

标签: c# wpf wcf sqldependency

今天我开始学习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并在我的数据库中设置了所需的权限。

0 个答案:

没有答案