有很多关于此的帖子,都围绕着一个共同的解决方案。我试图使用这个解决方案,但不相信它像我希望的那样可靠。如果有人能指出我做错了什么或建议让它更全面的证明,请发帖!
情况:观看共享网络文件夹..如果网络丢失,filewatcher将失去它试图观看和服务死亡的内容。以下代码可以正常工作,但不是所有时间。尝试设置FS的path属性时会触发该事件。如果找不到路径(网络关闭),则会抛出异常。我抓住它,基本上睡了x次,然后再试一次。理想情况下听起来它可以正常工作,但它不像它看起来那么可靠:(
Protected Overrides Sub OnStart(ByVal args() As String)
fs1 = New FileSystemWatcher
fs1.Filter = My.Settings.MonitoringFilter
' fs1.NotifyFilter = NotifyFilters.LastWrite
fs1.Path = My.Settings.MonitoringDirNOSlash
' Add event handlers.
AddHandler fs1.Error, AddressOf WatcherError
fs1.EnableRaisingEvents = True
End Sub
Protected Sub WatcherError(source As Object, e As ErrorEventArgs)
fs1.Dispose()
fs1 = New FileSystemWatcher
Dim c As Integer = 0
While Not fs1.EnableRaisingEvents
Try
fs1.Filter = My.Settings.MonitoringFilter
fs1.Path = My.Settings.MonitoringDirNOSlash
AddHandler fs1.Error, AddressOf WatcherError
fs1.EnableRaisingEvents = True
Catch ex As Exception
c += 1
If c = 1 Then
ErrorReport(ex.Message)
End If
System.Threading.Thread.Sleep(5000)
End Try
End While
End Sub