当我们使用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文件中的每个数据更改。