2010-01-07 4 views
2

standalone 응용 프로그램 vb.net (2.0)을 사용하고 filesysystem watcher 클래스를 사용하여 지정된 디렉토리로 들어오는 새 xml을 찾은 다음 응용 프로그램에서 해당 파일을 가져 와서 프로세스를 계속 진행하지만 디렉토리를 찾았습니다. 경로를 사용할 수없는되면 네트워크 기계, File System Watcher Over Network

지금 내 문제는 공유 경로 서버가 오프라인 것 의미

이며, 그 다음 내 응용 프로그램이 저를 intemate하지, 내가 어떻게,

하나를 내 코드를 CHAGE 수 아이디어가 있으시거나, 저에게 공유하십시오

미리 감사드립니다. Nanda.A

+0

입니다 :

여기 VB.Net의 일반적인 생각이다? 사용자 입력이 필요하거나 수동 개입없이 실행해야하는 항목? – AlexCuse

답변

2

디렉토리에서 변경 사항을 듣고 있고 서버를 다시 시작한 것처럼 사용할 수 없게되면 FileSystemWatcher가 예외를 throw합니다. 청취 할 수있는 OnError event을 제공하며 문제를 처리하는 방법을 결정할 수 있습니다.

여러 명의 관찰자를 실행하는 응용 프로그램이 있는데 하나의 오류가 발생하면 응용 프로그램은 30 초마다 다시 연결을 시도하여 오류를 처리합니다. 그것은 또한 실패한 연결을 시도한 횟수의 누적 합계를 유지하고 결국 (약 1 시간 후) 포기합니다. 이 응용 프로그램의 어떤 종류의

''' <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