0

これについては多くの投稿があり、すべて共通のソリューションを中心に展開しています。私はこのソリューションを使おうとしましたが、思ったほど信頼できるとは思いません。誰かが私が間違っていることを指摘したり、それをより完全な証拠にするための提案をしたりすることができたら、投稿してください!

状況:共有ネットワークフォルダの監視..ネットワークが失われると、filewatcherは監視しようとしていたものを失い、サービスが停止します。次のコードは機能しますが、常に機能するわけではありません。イベントは、FSのパスプロパティを設定しようとすると発生します。パスが見つからない場合(ネットワークがダウンしている場合)、例外がスローされます。私はそれを捕まえて、基本的に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
4

0 に答える 0