Как включить событие SqlDependency OnChange для обработки нескольких запросов одновременно

Когда мы работаем с SqlDependencyтогда мы работаем с OnDataChange событие и это событие уведомляет нас об изменении данных в таблице. Предположим, мое приложение отслеживает test использование таблицы SqlDependencyи предположим, что огромные объемы данных вставляются и обновляются в test стол очень часто. Я не знаю, как SqlDependency в OnDataChange событие может справиться с этой ситуацией, потому что OnDataChange Событие будет запускаться так же часто, как изменения данных в таблице БД.

Вот фрагмент моего кода для 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 стол, то OnDataChange могу справиться с ситуацией. OnDataChange событие не должно зависать и должно регистрировать каждое изменение данных в файле XML.

0 ответов

Другие вопросы по тегам