我在Windows窗体应用程序中遇到以下错误?任何人都可以帮助解决它

时间:2019-03-07 10:16:13

标签: c# .net excel windows forms

从excel上传数据并将其存储在gridview中,然后关闭应用程序后,在执行所有任务后将显示以下弹出窗口。enter image description here

已为excel wokbook和excel表格编写了代码以关闭 即:sWorkbook.Close();      sExcelApp.Quit();

1 个答案:

答案 0 :(得分:0)

以上消息是由于您的excel对象未关闭而仍保留在系统进程中。

您实际上可以干净地释放Excel Application对象,但是您必须小心。 您访问的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); 在大多数代码示例中,您都会看到从.NET清理COM对象的过程,对GC.Collect()GC.WaitForPendingFinalizers()的调用是两次TWICE:

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