网络上的文件系统观察者

时间:2010-01-07 18:03:11

标签: vb.net filesystemwatcher

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

现在我的问题是

一旦路径不可用,就意味着共享路径服务器将脱机,然后我的应用程序没有与我交往,我怎么能让我的代码变形,

任何人都有想法,请与我分享

先谢谢 Nanda.A

2 个答案:

答案 0 :(得分:2)

如果您正在侦听目录上的更改并且它变得不可用(如正在重新启动的服务器),则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

答案 1 :(得分:0)

您需要检查您的净分配的可用性。仅供参考:Determining if file exists using c# and resolving UNC path