Как включить событие 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.