所以对于_excel = New Excel.Application,如果我不使用_excel.Quit和FinalReleaseComObject(_excel),当我的应用程序关闭时,excel进程也将关闭。另一方面,当我使用这两种清理方法时,excel进程将一直保留到我的应用程序关闭。我正在使用Windows 10和Visual Studio 22那么清理非托管资源是否已经过时了呢?
_excel = New Excel.Application
_excel.Quit
FinalReleaseComObject(_excel)
h5qlskok1#
Office COM互操作在这里是出了名的糟糕......通常您应该做的是以创建对象的相反顺序释放每个对象。例如,首先创建Excel.Application,但我想您还引用了工作簿和工作表。如果在首次释放对工作表的引用并关闭工作簿之前调用.Quit,进程会留在内存中。你不应该调用FinalReleaseComObject,事实上,如果你仍然有引用没有被释放,它可能会也可能不会使进程崩溃...
1条答案
按热度按时间h5qlskok1#
Office COM互操作在这里是出了名的糟糕......通常您应该做的是以创建对象的相反顺序释放每个对象。例如,首先创建Excel.Application,但我想您还引用了工作簿和工作表。如果在首次释放对工作表的引用并关闭工作簿之前调用.Quit,进程会留在内存中。你不应该调用FinalReleaseComObject,事实上,如果你仍然有引用没有被释放,它可能会也可能不会使进程崩溃...