Вот мой код:SqlDependency на смену не всегда стрельбы
Public Sub RegisterNotification()
Dim conStr As String = ConfigurationManager.ConnectionStrings("sqlConString").ConnectionString
Dim sqlCommand As String = "SELECT [ID],[Description], [CreateDate], [NoteTypeID] from [note].[Notes]"
Using con As New SqlConnection(conStr)
Dim cmd As New SqlCommand(sqlCommand, con)
If con.State <> System.Data.ConnectionState.Open Then
con.Open()
End If
cmd.Notification = Nothing
Dim sqlDep As New SqlDependency(cmd)
AddHandler sqlDep.OnChange, AddressOf sqlDep_OnChange
Using reader As SqlDataReader = cmd.ExecuteReader()
End Using
End Using
End Sub
Private Sub sqlDep_OnChange(sender As Object, e As SqlNotificationEventArgs)
If e.Type = SqlNotificationType.Change Then
Dim sqlDep As SqlDependency = TryCast(sender, SqlDependency)
'Dim id
RemoveHandler sqlDep.OnChange, AddressOf sqlDep_OnChange
If e.Info = 1 Then
Dim notificationHub = GlobalHost.ConnectionManager.GetHubContext(Of NotificationHub)()
notificationHub.Clients.All.notify("added")
RegisterNotification()
'GetNotificationList(0, 1)
End If
End If
End Sub
Global.asax код:
Protected Sub Application_Start()
Try
Dim _obj As New DAL.sap.Register
_obj.Register()
AreaRegistration.RegisterAllAreas()
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters)
RouteConfig.RegisterRoutes(RouteTable.Routes)
BundleConfig.RegisterBundles(BundleTable.Bundles)
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "webpages_UserProfile", "UserId", "UserName", True)
SqlDependency.Start(con)
Catch ex As Exception
End Try
End Sub
Protected Sub Session_Start(sender As Object, e As EventArgs)
Try
Dim NC As New NotificationComponent()
NC.RegisterNotification()
Catch ex As Exception
End Try
End Sub
Protected Sub Application_End()
Try
SqlDependency.Stop(con)
Catch ex As Exception
End Try
End Sub
код запуска:
<Assembly: OwinStartupAttribute(GetType(www.Startup))>
пространство имен WWW Partial Public Class Startup Public Sub Configuration (приложение As IAppBuilder) app.MapSignalR() End Sub End Class End Namespace
Моя проблема sqldep_onchange не всегда стрельбы. Иногда он работает отлично, но иногда ничего не происходит. это ошибка или что-то в этом роде? что я делаю неправильно?
Я попытался, что у предложил, и ничего не происходит, и он не бросает исключение. Когда я запускаю свое приложение, он отлично работает, но, возможно, через 10-15 минут он не срабатывает. – user3188649
Проверьте, зарегистрированы ли у вас какие-либо обработчики, одна строка кода, которая навязывается мне, заключается в том, что вы немедленно удаляете обработчик, не проверяя, есть ли более одного ... если вы удалите только обработчик, тогда он прекратит стрельбу. –
Вы получили эту работу? –