2016-08-08 5 views
0

나는 issue과 비슷합니다. 하지만 특정 디렉터리에서 파일을 읽으려면 Windows 서비스를 사용하고 있습니다. 여러 파일이 동시에 또는 하나씩 올 수 있습니다. 문제는 내가 그것을 읽는 파일을 넣을 때이지만 다른 파일을 넣으면 파일 액세스 예외가 발생합니다. 도와주세요. 감사. 여기 Windows 서비스를 사용하여 파일을 읽을 때 FileSystemWatcher의 파일 액세스 오류

코드입니다 :

private static void OnCreated(object source, FileSystemEventArgs e) 
    { 
     try 
     { 
      var data = new FileData(); 
      data.ReadFile(e.FullPath); 

     } 
     catch (Exception ex) 
     { 
      WriteLogForError(ex.Message, String.Empty, ErrorLogPath); 
     } 
    } 
+0

코드를 보여주세요. 파일이 만들어 졌기 때문에 아직 작성되지 않은 파일의 크기에 따라 다릅니다. – BugFinder

+1

파일 시스템이나 다른 프로세스 (버그 파인더가 말한 것처럼 파일의 출처 또는 바이러스 백신 등)를 제어하지 않습니다. 당신이 원하는 모드로 파일을 열 수있을 때까지 독서와 sleep/loop에 사용할 수없는 파일을 * 처리하는 유일한 옵션이 있습니다. 원하는 모드로 파일을 열면 원하는 모든 내용을 얻을 수 있습니다. –

+0

@Damien_The_Unbeliever 저에게 예제 코드를 제공해 주시겠습니까? –

답변

0

당신은 파일이 생성되는 순간에 액세스하려고합니다. 파일을 만드는 다른 프로세스는 아직 파일에 쓰고있을 수 있으므로 아직 만지면 안됩니다.

해결책은 어색합니다 : 파일을 목록/대기열에 넣고 타이머를 시작한 후 몇 초 후에 읽으려고 시도합니다 (시도를 잊지 말고 실패시 다시 시도하십시오.) 다른 프로세스가 작업을 완료했다는 직접적인 통지 없음).

+0

시도해 봅니다. Thread.Sleep(); 파일이 작성되는 동안 기다려야합니다. 성공하면 코드로 답변을 게시합니다. –