2014-02-17 63 views
0

我有一个错误处理程序,以便当网络连接断开时,它会不断检查连接已恢复,然后再次启动FileSystemWatcher。要做到这一点,我目前运行此代码:处理FileSystemWatcher上的连接丢失

Sub errhandler(ByVal source As Object, ByVal e As _ 
        System.IO.ErrorEventArgs) 

    Me.NotifyIcon1.BalloonTipIcon = ToolTipIcon.Error 
    Me.NotifyIcon1.BalloonTipText = "Connection to the folder has been lost" 
    Me.NotifyIcon1.BalloonTipTitle = "Connection Lost" 
    Me.NotifyIcon1.ShowBalloonTip(6000) 

    Do Until Dir("\\My\Path", vbDirectory) <> vbNullString 
     Application.DoEvents() 
    Loop 
    watchFolder = Nothing 
    Me.NotifyIcon1.BalloonTipIcon = ToolTipIcon.Info 
    Me.NotifyIcon1.BalloonTipText = "Attempting Reconnection" 
    Me.NotifyIcon1.BalloonTipTitle = "Attempting Reconnection to folder" 
    Me.NotifyIcon1.ShowBalloonTip(6000) 
    checkItem() 
End Sub 

我希望在Do Until... Loop将努力检查连接重新工作,但是这似乎并没有工作,所以它不会通过休息继续的代码(第一个工具提示显示,所以我知道这不是我的错误处理程序的问题)

它可能不是检查恢复连接的最佳方法,但我真的不明白为什么它wouldn没有工作。如果肯定不会,有人可以解释为什么或者应该如何,我在这里错过了什么?另请注意,我是相当新的VB.Net :)

此外,如果您需要它,checkItem运行下列程序(加上这里没有显示的一些记录)

watchFolder = New System.IO.FileSystemWatcher() 
watchFolder.Path = "\\My\Path\" 
watchFolder.IncludeSubdirectories = True 
watchFolder.EnableRaisingEvents = True 
watchFolder.NotifyFilter = IO.NotifyFilters.DirectoryName 
watchFolder.NotifyFilter = watchFolder.NotifyFilter Or IO.NotifyFilters.FileName 
watchFolder.NotifyFilter = watchFolder.NotifyFilter Or IO.NotifyFilters.Attributes 
AddHandler watchFolder.Changed, AddressOf logchange 
AddHandler watchFolder.Created, AddressOf logchange 
AddHandler watchFolder.Deleted, AddressOf logchange 
AddHandler watchFolder.Error, AddressOf errhandler 
AddHandler watchFolder.Renamed, AddressOf logrename 

回答

1

找到了问题。在Dir部分中缺少“\”,表示我的路径已结束。现在读

Do Until Dir("\\My\Path\", vbDirectory) <> vbNullString 
    Application.DoEvents() 
Loop 

工作正常