2013-09-24 4 views
0

아래의 방법으로 여러 개의 문서를 제공하고 Office 2000 이후 버전의 WinXP 32 비트에서 Win8 64 비트를 실행하는 15 개 이상의 다른 PC에서 winword.exe가 예상대로 표시되지 않습니다. 트렌드의 안티 바이러스가 실행중인 1 개의 악몽 PC에서 winword.exe (항상, 매번)는 "파일 사용 중"예외로 루프를 중단합니다 (트렌드를 끄면 다시 작동합니다). 트렌드를 유지할 수있는 아이디어가 있습니까?C# interop winword.exe가 종료되지 않습니다()!

void loop() 
{ 
Microsoft.Office.Interop.Word._Application app = new Microsoft.Office.Interop.Word.Application(); 
app.Visible = false; app.ScreenUpdating = false; app.DisplayAlerts = WdAlertLevel.wdAlertsNone; 

Microsoft.Office.Interop.Word._Document doc = app.Documents.Open(FilePath, false, true, false); 
doc.Activate(); doc.DisableFeatures = true; 

doc.ExportAsFixedFormat(newFileName, WdExportFormat.wdExportFormatPDF, false,WdExportOptimizeFor.wdExportOptimizeForOnScreen, WdExportRange.wdExportCurrentPage, 1, 1, WdExportItem.wdExportDocumentWithMarkup, false, false, WdExportCreateBookmarks.wdExportCreateNoBookmarks, true, false, true, Type.Missing); 

((Microsoft.Office.Interop.Word._Document)doc).Close(WdSaveOptions.wdDoNotSaveChanges); 
Marshal.ReleaseComObject(doc); 
Marshal.FinalReleaseComObject(doc); 

((Microsoft.Office.Interop.Word._Application)app).Quit(WdSaveOptions.wdDoNotSaveChanges); 
Marshal.ReleaseComObject(app); 
Marshal.FinalReleaseComObject(app); 

GC.GetTotalMemory(false); 
GC.Collect(); 
GC.WaitForPendingFinalizers(); 
GC.Collect(); 
GC.GetTotalMemory(true); 
} 
+0

루크, 너 락. 매번 완벽한 실행을 위해 설명한 내용을 정확하게 수행했습니다. 고맙습니다! –

답변

0

AV와 비슷한 문제가 있습니다.

try catch에 넣고 catch에 Sleep()을 추가 한 다음 다시 시도해야합니다.

나는 수면이 얼마나 오래되었는지를 결정하는 데 파일의 크기가 얼마나 큰지 알아 내야 만했다. (얼마나 오랫동안 스캔이 진행되었는지에 따라 스캔 시간에 비례했다.)

희망이 있으십니까?

+0

제안 된 솔루션 코드를 보여 주시겠습니까? – ecoe