0

我将多个文档提供给以下方法,并看到 winword.exe 在超过 15 台运行 WinXP 32 位到 Win8 64 位且具有 Office 2000 及更高版本的不同 PC 上按预期消失。在 1 台运行 Trend 防病毒软件的噩梦 PC 上,winword.exe(总是,每次)以“正在使用的文件”异常中断循环(关闭 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);
}
4

1 回答 1

0

我在 AV 上也遇到过类似的问题。

您需要将其放入 try catch 中,并在 catch 中添加一个 Sleep() 然后再试一次。

我最终不得不计算文件有多大来确定睡眠时间应该多长(基于扫描进行的时间与扫描时间成正比)。

希望这足以让你继续前进吗?

于 2013-09-25T15:00:56.833 回答