Я сталкиваюсь со следующей ошибкой в ​​приложении Windows Form? Может кто-нибудь помочь решить это - PullRequest
1 голос
/ 07 марта 2019

После загрузки данных из Excel и сохранения их в gridview, а также закрытия приложения появляется следующее всплывающее окно после выполнения всей задачи. введите описание изображения здесь

Написали код для Excel Wokbook и Excel лист, чтобы закрыть т.е.: sWorkbook.Close (); sExcelApp.Quit ();

1 Ответ

0 голосов
/ 07 марта 2019

Данное сообщение связано с тем, что ваш объект Excel не закрывается, но все еще остается в системном процессе.

На самом деле вы можете полностью освободить объект приложения Excel, но вам нужно позаботиться об этом. COM-объект, к которому вы обращаетесь, а затем явно освобождаете его через Marshal.FinalReleaseComObject(), является теоретически правильным, но, к сожалению, очень сложным для управления на практике.

// Cleanup
GC.Collect();
GC.WaitForPendingFinalizers();

Marshal.FinalReleaseComObject(xlRng);
Marshal.FinalReleaseComObject(xlSheet);

xlBook.Close(Type.Missing, Type.Missing, Type.Missing);
Marshal.FinalReleaseComObject(xlBook);

xlApp.Quit();

Marshal.FinalReleaseComObject (xlApp); В большинстве примеров кода, которые вы увидите для очистки COM-объектов из .NET, вызовы GC.Collect() и GC.WaitForPendingFinalizers() делаются ДВАЖДЫ, как в:

GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
...