我正在使用独立应用程序 vb.net(2.0) 并使用文件系统观察程序类来查找进入该指定目录的任何新 xml,然后应用程序获取该文件并继续该过程,但该目录已位于网络机器中,
现在我的问题是
一旦路径不可用,这意味着共享路径服务器将脱机,然后我的应用程序无法与我联系,我怎么能更改我的代码,
任何人有想法,请分享给我
在此先感谢 Nanda.A
我正在使用独立应用程序 vb.net(2.0) 并使用文件系统观察程序类来查找进入该指定目录的任何新 xml,然后应用程序获取该文件并继续该过程,但该目录已位于网络机器中,
现在我的问题是
一旦路径不可用,这意味着共享路径服务器将脱机,然后我的应用程序无法与我联系,我怎么能更改我的代码,
任何人有想法,请分享给我
在此先感谢 Nanda.A
如果您正在侦听目录上的更改并且它变得不可用(例如重新启动服务器),则 FileSystemWatcher 将引发异常。它提供了一个您可以侦听的OnError 事件,您可以决定如何处理该问题。
我有一个运行多个观察者的应用程序,当出现一个错误时,应用程序将通过每 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