处理Filewatcher与网络断开连接

时间:2012-10-19 16:44:42

标签: vb.net

有很多关于此的帖子,都围绕着一个共同的解决方案。我试图使用这个解决方案,但不相信它像我希望的那样可靠。如果有人能指出我做错了什么或建议让它更全面的证明,请发帖!

情况:观看共享网络文件夹..如果网络丢失,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

0 个答案:

没有答案