【问题标题】:File System Watcher Over Network网络上的文件系统观察程序
【发布时间】:2010-01-07 18:03:11
【问题描述】:

我正在使用独立应用程序 vb.net(2.0) 并使用文件系统观察程序类来查找进入该指定目录的任何新 xml,然后应用程序获取该文件并继续该过程,但该目录已位于网络机器中,

现在我的问题是

一旦路径不可用,则意味着共享路径服务器将离线,然后我的应用程序无法与我联系,我该如何更改我的代码,

谁有想法,请分享给我

提前致谢 南达.A

【问题讨论】:

  • 这是什么应用程序?需要用户输入,还是需要在没有人工干预的情况下运行?

标签: vb.net filesystemwatcher


【解决方案1】:

如果您正在侦听目录上的更改并且它变得不可用(例如重新启动服务器),FileSystemWatcher 将抛出异常。它提供了一个OnError event,您可以收听并决定如何处理问题。

我有一个运行多个观察程序的应用程序,当出现一个错误时,应用程序将通过每 30 秒循环一次尝试再次连接来处理错误。它还会记录尝试连接失败并最终放弃的总次数(大约一个小时后)。

这是 VB.Net 中的总体思路:

''' <summary>
''' This event is called when an error occurs with the file watcher. Most likely the directory being watched is no longer available (probably from a server reboot.)
''' </summary>
Protected Sub Scan_Error(ByVal Source As FileSystemWatcher, ByVal E As ErrorEventArgs)

    '// Stop listening
    Source.EnableRaisingEvents = False

    '// Maximum attempts before shutting down (one hour)
    Dim Max_Attempts As Integer = 120
    Dim Timeout As Integer = 30000
    Dim I As Integer = 0

    '// Attempt to listen - if fail, wait and try again in 30 seconds.
    While Source.EnableRaisingEvents = False And I < Max_Attempts
        I += 1

        Try
            Source.EnableRaisingEvents = True
        Catch
            Source.EnableRaisingEvents = False
            System.Threading.Thread.Sleep(Timeout)
        End Try
    End While
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多