Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何启用SqlDependency OnChange事件一次处理多个请求_C#_Sql Server_Sqldependency - Fatal编程技术网

C# 如何启用SqlDependency OnChange事件一次处理多个请求

C# 如何启用SqlDependency OnChange事件一次处理多个请求,c#,sql-server,sqldependency,C#,Sql Server,Sqldependency,当我们使用SqlDependency时,我们使用OnDataChange事件,该事件通知我们表中的数据更改。假设我的应用程序正在使用SqlDependency监视一个测试表,并且假设大量数据在测试表中频繁插入和更新。我不知道SqlDependency的OnDataChange事件如何处理这种情况,因为OnDataChange事件将与db表中的数据更改一样频繁地触发 以下是我的OnChange事件代码片段: 在设计OnDataChange事件时,如果测试表中的数据更改非常频繁,那么OnDataCh

当我们使用SqlDependency时,我们使用OnDataChange事件,该事件通知我们表中的数据更改。假设我的应用程序正在使用SqlDependency监视一个测试表,并且假设大量数据在测试表中频繁插入和更新。我不知道SqlDependency的OnDataChange事件如何处理这种情况,因为OnDataChange事件将与db表中的数据更改一样频繁地触发

以下是我的OnChange事件代码片段:


在设计OnDataChange事件时,如果测试表中的数据更改非常频繁,那么OnDataChange可以处理这种情况,我正在寻找一些帮助。OnDataChange事件不应该冻结,应该将每个数据更改记录在xml文件中。

我不确定SqlDependency是否适合您的情况。也许你可以试试?@jj Chage data capture不能像sql依赖一样通知winform客户端。谢谢
void OnDataChange(object sender, SqlNotificationEventArgs e)
{
    ((SqlDependency)sender).OnChange -= OnDataChange;

    BBALogger.Write("PartIndexer Service RegisterNotification called end", BBALogger.MsgType.Info);

    if (e.Source == SqlNotificationSource.Timeout)
    {
        MailSend(); // notification mail send
        BBALogger.Write("PartIndexer Service SqlNotificationSource.Timeout error", BBALogger.MsgType.Error);

        Environment.Exit(1);
    }
    else if (e.Source != SqlNotificationSource.Data)
    {
        MailSend(); // notification mail send
        BBALogger.Write("PartIndexer Service SqlNotificationSource.Data", BBALogger.MsgType.Error);

        Environment.Exit(1);
    }
    else if (e.Type == SqlNotificationType.Change)
    {
        StartIndex();
        BBALogger.Write("PartIndexer Service Data changed", BBALogger.MsgType.Info);
    }
    else
    {
        BBALogger.Write(string.Format("Ignored change notification {0}/{1} ({2})", e.Type, e.Info, e.Source), BBALogger.MsgType.Warnings);
    }

    RegisterNotification();
}