SqlDependency onchange事件无限循环
技术问答
188 人阅读
|
0 人回复
|
2023-09-12
|
我有一个简单的查询,并且该事件在正确的时间触发。但是,一旦触发,.HasChanges该SqlDependency对象的属性总是设置为true。
: |) l# ^# E( y# ~第一次触发OnChange时,SqlNotificationEventArgs Info属性为“ Inserted第二次触发事件是已更改。
8 I, w3 M# J% f1 `. K6 J1 \我在OnChange事件中注明了我所有的代码,以验证我的代码没有引起更改。
4 _4 ?7 g; f6 Y数据库中已启用Servicebroker以下代码是否有原因?onChange事件的无限循环?
' I0 ^3 P# _+ b& j" R3 P' K2 ?static void Main(){ SqlDependency.Stop(Properties.Settings.Default.DEVConnectionString); SqlDependency.Start(Properties.Settings.Default.DEVConnectionString); using (SqlConnection cn = new SqlConnection(Properties.Settings.Default.DEVConnectionString)) cn.Open();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;using (SqlCommand cmd = new SqlCommand("SELECT UserPageActionLogID,PageActionID FROM dbo.UserPageActionLog WHERE PageActionID != 3 ORDER BY UserPageActionLogID ASC",cn)) cmd.Notification = null; SqlDependency dep = new SqlDependency(cmd); dep.OnChange = dep_onchange; using (SqlDataReader dr = cmd.ExecuteReader()) while (dr.Read()) //Do nothing on first run Application.Run()Prevents the application from closing}private static void dep_onchange(object sender,SqlNotificationEventArgs e){ SqlDependency dependency = sender as SqlDependency; dependency.OnChange -= dep_onchange; //Do stuff for the function. I commented this out and still had an issue //Resubscribe to the event to continue catching future changes dependency.OnChange = dep_onchange;}
, s/ U; v+ F& K" g2 s& D, N/ ^ 解决方案: |
|
|
|
|
|