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