2010-03-30 3 views
0

두 개의 PDF 파일을 병합해야합니다. 그러나 때로는 파일이 코드를 작성 파일을 복사하는 가장 안전한 방법

을 고정 할 수 있지만,이 똑똑한 솔루션이 아니라면 궁금하네요 : 당신이 잠을 수 있도록 당신은 몇 번의 클릭에 대한 타이머를 추가해야

 private static int FILE_LOCKED_WAIT_PERIOD = 1000; 
while (true) 
        { 
         // If the file is in use, IOException will be thrown. 
         // If file is not permitted to be opened because of Permission 
         // Restrictions, UnauthorizedAccessException will be thrown. 
         // For all other, Use normal Exception. 

         try 
         { 
          inputDocument1 = PdfReader.Open(fileToMerge, PdfDocumentOpenMode.Import); 

          break; 
         } 
         catch (IOException) 
         { 
          Thread.Sleep(FILE_LOCKED_WAIT_PERIOD); 
         } 
         catch (UnauthorizedAccessException) 
         { 
          Thread.Sleep(FILE_LOCKED_WAIT_PERIOD); 
         } 
         catch (Exception) 
         { 
          Thread.Sleep(FILE_LOCKED_WAIT_PERIOD); 
         } 
        } 
+0

가능한 복제본 : http://stackoverflow.com/questions/1563191/c-cleanest-way- 쓰기 재시도 - 논리 –

+0

@aron : 위 링크에서 질문에 대한 대답을 알려주십시오. 질문의 정확한 복제물처럼 보이지 않지만 내용이 여전히 도움이 될 수 있습니다. –

답변

0

파일 작업을 다시 시도하기 전에

또한 카운터가 있어야 무한정 기다리지 않고 15 회 시도 후 종료 할 수 있습니다.

+2

그는 예외로 잠을 자고 있어요. 나는 그가 재시도 카운터를 가져야한다는 데 동의한다. – pestilence669

0

이것은 다음에 달려 있습니다. 1) 사용자와 독립적 인 시스템의 내부 프로세스입니까? 그렇다면 파일을 잠그고 명시 적으로 기다려야합니다. 무작위로 대기 한 다음 반복해서 시도하면 자체적으로 문제가 발생할 수 있습니다.

2) 파일을 열어 볼 수있는 사용자입니까? 이 경우 사용자가 갑자기 떠나기 때문에 시스템이 주말 내내 다시 시도 할 수 있기 때문에 대기는 도움이되지 않습니다. 사용자 타이밍을 제어 할 권한이 없습니다. 파일이 열려 있고 다시 시도하도록 요청한 작업을 수행 할 수 없다고 사용자에게 알립니다.

일반적으로 N 초/분을 기다리는 것은 실제로 해결책이 아닙니다. 문제가 무엇인지 파악하고 &이라는 설문 조사를 통해 문제를 해결하거나 실제로 아무 것도 할 수 없으며 알림을 보내면됩니다.

0

이렇게하는 특별한 기능은 없습니다. 사실이 기능이 있어도 일부 프로세스는 "잠금 확인"과 "파일 열기"사이에서이 파일을 쉽게 잠글 수 있습니다.

관련 문제