2017-11-30 5 views
0

Word 및 Amyuni PDF 제품군을 사용하여 형식이 지정된 PDF 파일을 만드는 C# 프로그램 (.Net 4.61)에 수업이 있습니다. 이 과정에서, 네 개의 임시 PDF 파일은 사용자의 임시 폴더에 생성됩니다 프로세스가 완료임시 파일을 삭제할 때 C# app가 예외없이 종료됩니다.

private string TempFolder = Path.GetTempPath(); 

, I 과정에서 생성 된 모든 임시 파일 삭제 실행 다음 정리 방법이 있습니다

private void EraseTempFiles() 
{ 
    // For each temp file: 
    foreach (string tempFile in TempFiles) 
    { 
     if (File.Exists(tempFile)) 
     { 
      File.Delete(tempFile); 
     } 
    } 
} 

거의 모든 배포 된 Windows 시스템 (모든 64 비트 Windows 7 시스템)에서 작동하지만 일부에서는 EraseTempFiles 메서드가 임시 파일 중 세 번째 파일을 삭제하면 응용 프로그램이 즉시 종료됩니다. 예외는 발생하지 않습니다. File.Delete를 try-catch로 포위했습니다.

Windows 탐색기를 사용하여 파일을 삭제할 수 있습니다.

다른 임시 파일을 다른 폴더에 저장하고 이름을 변경하는 방법을 변경하려고 시도했습니다. 응용 프로그램을 추적하는 ProcDump을 실행하면 아무것도 잡은하지 않은, 단순히보고 :

[23:54:52] The process has exited. 
[23:54:52] Dump count not reached. 

나는 또한 처리되지 않은 예외 이벤트에 가입했습니다 핸들러도

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(UnhandledExceptionHandler); 

private void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs e) 
{ 
    System.Windows.Forms.MessageBox.Show(((Exception)e.ExceptionObject).Message); 
    throw new NotImplementedException(); 
} 

를 호출하지.

프로그램 종료와 같은 설명이없는 것을 본 적이 없습니다. Windows 자체가 일부 위반으로 인해 프로세스가 종료 될 수도 있지만 모든 임시 파일이 기본적으로 동일하고 아무런 문제없이 첫 번째 두 파일을 삭제할 수 있다는 것을 알 수는 없습니다.

이전에 이런 유형의 동작을 본 사람이 있습니까?

+1

Windows 이벤트 로그를 보았습니까? –

+0

은 '사용 권한'문제와 유사합니다. 시도 잡아 주위에 삭제를 감싸고 그것이 당신에게 그 이유와 이유를 알려주는지 확인하십시오. – MethodMan

+0

이것은 이유에 대한 내 순수한 추측이므로 소금 한 알씩 가져 가야합니다. Windows는 삭제하는 동안 동일한 파일에 액세스하려고 시도하며 시스템 이후로 먼저 코드를 우선 처리합니다. 실행 중에는 상태가 유효하지 않으므로 예외는 아닙니다. 나는 전체 foreach 루프에 걸쳐 시스템 전역 뮤텍스를 획득 할 것입니다. https://msdn.microsoft.com/en-us/library/system.threading.mutex(v=vs.110).aspx 이렇게하면 응용 프로그램의 속도가 저하되지 않아야합니다. –

답변

0

Trend Micro를 사용하지 않도록 설정하면 더 이상 임시 파일을 삭제할 때 프로그램이 종료되지 않습니다. Trend Micro를 다시 활성화하십시오. 물론 충분히 죽게됩니다. 이제 Trend Micro를 실행하는 방법을 결정해야하지만 내 응용 프로그램은 죽이지 않아야합니다!

관련 문제