c # interop winword.exe не завершает работу ()!

Я загружаю несколько документов в метод, приведенный ниже, и вижу, как winword.exe исчезает, как и ожидалось, на более чем 15 различных ПК, работающих от 32-разрядной версии WinXP до 64-разрядной версии Win8 с Office 2000 и новее. На одном кошмарном ПК, на котором запущен Trend's Antivírus, программа winword.exe (всегда, каждый раз) прерывает цикл с исключением «File in Use» (отключение Trends позволяет снова работать). Есть какие-нибудь идеи для продолжения тренда?

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);
}

person Aleksander Spacca    schedule 24.09.2013    source источник
comment
Грач, ты Рок. Я каждый раз делал именно то, что вы описали, для безупречного исполнения. Спасибо!   -  person Aleksander Spacca    schedule 25.09.2013


Ответы (1)


У меня были аналогичные проблемы с AV.

Вам нужно поместить его в уловку, а в уловку добавить Sleep (), а затем повторить попытку.

В итоге мне пришлось выяснить, насколько велик файл, чтобы определить, как долго должен быть сон (в зависимости от того, как долго продолжалось сканирование, было несколько пропорционально времени, затраченному на сканирование).

Надеюсь, этого достаточно, чтобы вы начали?

person Dave    schedule 25.09.2013
comment
не могли бы вы показать код предлагаемого вами решения? - person ecoe; 26.02.2015