Сначала может показаться сложным завершить работу приложения Microsoft Office, но как только вы установите правильный порядок операций, на самом деле это совсем не сложно.
Выпуск приложения MS Office можно выполнить безопасно и эффективно в два этапа:
(1) Сначала освободите все второстепенные объекты, на которые у вас нет ссылки в именованной переменной. Это делается с помощью вызова GC.Collect () , а затем GC.WaitForPendingFinalizers () . Обратите внимание, что если вы используете Visual Studio Tools for Office (VSTO), вам необходимо вызвать эту пару команд дважды , чтобы получить возможность успешного освобождения объектов COM. Однако вы не используете VSTO, поэтому достаточно вызвать их один раз.
(2) Затем явно освободите объекты, которые вы держите, через именованную переменную, используя вызов Marshall.FinalReleaseComObject () для каждой вашей переменной.
Не забудьте явно освободить все переменные, которые вам нужны для COM-компонентов. Если вы пропустите хотя бы один из них, ваше приложение MS Office будет зависать. В вашем коде, кажется, есть три именованные переменные, которые содержат ссылку на приложение PowerPoint: ppApp
, ppPres
и cell
.
Принимая все это во внимание, я думаю, что ваша очистка должна выглядеть примерно следующим образом, в которой используется using System.Runtime.InteropServices
либо в пространстве имен, либо в верхней части документа кода:
// using System.Runtime.InteropServices
// Cleanup:
GC.Collect();
GC.WaitForPendingFinalizers();
Marshal.ReleaseComObject(cell);
ppPres.Close();
Marshal.ReleaseComObject(ppPres);
ppApp.Quit();
Marshal.ReleaseComObject(ppApp);
Дайте ему попытку, я думаю, что это должно сработать для вас ... (Если нет, возможно, вам придется показать еще больше вашего кода.) Для получения дополнительной информации, я даю подробное объяснение о том, как правильно выпустить Excel заявление здесь:
Как правильно очистить объекты взаимодействия Excel в C # .
Надеюсь, это поможет, дайте нам знать, как это происходит ...
- Майк