我正在使用独立应用程序vb.net(2.0)并使用filesysystem watcher类来查找进入指定目录的任何新xml,然后应用程序获取该文件并继续该过程,但是direcotry已经位于网络机器中,
现在我的问题是
一旦路径不可用,就意味着共享路径服务器将脱机,然后我的应用程序没有与我交往,我怎么能让我的代码变形,
任何人都有想法,请与我分享
先谢谢 Nanda.A
答案 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