2014-10-19 6 views
0

내 파일 감시자 이벤트가 첫 번째 파일 만 읽은 후 다음 오류가 발생합니다. "오류 : System.IO.IOException : 프로세스가 'D : \ TREE \ Dump \ TF20141004011343313.txt 파일에 액세스 할 수 없습니다. '다른 프로세스에서 사용 중이기 때문입니다.'File Watcher 오류

int? msgID; 
     string dup =""; 
     try 
     { 
      //---------read from file------------ 

      string block; 

      using (StreamReader sr = File.OpenText(MsgsPath + "\\" + e.Name)) 
      { 
       block = sr.ReadToEnd(); 
      } 

과 오른쪽 개폐 자동으로 처리해야 "사용"여기

내 코드? 그때 처리 된 파일을 이동하려면이 코드를 사용

FileSystemWatcher Created 이벤트가 즉시 다른 프로세스가 쓰기 위해 파일을 엽니로 트리거
 File.Move(MsgsPath + "\\" + e.Name, MsgsPath + "\\Archive\\" + e.Name); 
+0

이는 완전히 정상입니다. FSW 이벤트를 받으면 파일을 업데이트하는 프로그램이 여전히 FSW 이벤트를 적극적으로 사용하고 있습니다. 파일이 완성 될 때까지 기다리는 것은 거의 항상 필요합니다. 그 소요 시간을 예측할 수는 없습니다. 파일의 경로를 목록에 넣고 주기적으로 타이머를 사용하여 파일을 열어보십시오. –

답변

-1

. 그런 다음 하나 이상의 Changed 이벤트가 이어지며 다른 프로세스가 파일에 쓰고 마침내 닫습니다.

오류를 해결하기 가장 쉬운 방법, 파일에 액세스하기 전에 잠시 대기하는 것입니다 :

Thread.Sleep(500); 

더 진보 된 방법의 마지막에서 잠시 대기하는 것입니다 Changed 이벤트.

+0

왜 downvote? 대답은 정확하다고 보십니까? – Ondra

+0

파일을 수동으로 삭제했으며 오류가 발생하지 않았으므로 실시간 무거운 메시지가 표시 될 때까지 기다렸다가 해결 된 것으로 표시합니다. 많은 감사 –

+0

파일을 열고, 잠시 기다렸다가 쓰고, 닫는 작은 응용 프로그램이나 스크립트를 작성해보십시오. 그것은 당신이 디버깅하는 데 도움이됩니다. –