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

时间:2015-04-29 08:05:40

标签: c# sql-server sqldependency

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

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

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();
}

我正在寻找一些帮助来设计我的OnDataChange事件,以便在test表格中非常频繁地更改数据,然后{{1可以处理这种情况。 OnDataChange事件不应该冻结,应该记录xml文件中的每个数据更改。

0 个答案:

没有答案