我如何验证Excel互操作对象是否正确清理?
我在我的项目中实例化Excel互操作对象。 我知道清理这些对象需要特别的努力(见这个问题)。 有没有自动的方法来验证清理是否正确完成?
详细说明,我知道,如果清理工作不正确,Excel.exe可能会在调用Application.Quit后继续运行。 但是,我不清楚这是否是可靠的测试条件。 另外,由于延续的Excel.exe过程仅仅是真正的功能障碍的症状,如果存在这样的情况,似乎更可取的是使用更接近根本原因的测试条件。
当完成使用Excel对象时,我将这种方法称为“以防万一” - 主要是从链接中选取的,您也可以参考:
public static void CloseExcel()
{
GC.Collect();
GC.WaitForPendingFinalizers();
if (_range != null)
{
Marshal.FinalReleaseComObject(_range);
_range = null;
}
if (_workSheet != null)
{
Marshal.FinalReleaseComObject(_workSheet);
_workSheet = null;
}
if (_workBook != null)
{
_workBook.Close(false, String.Empty, false);
Marshal.FinalReleaseComObject(_workBook);
_workBook = null;
}
if (_application != null)
{
try
{
_application.Quit();
}
Marshal.FinalReleaseComObject(_application);
_application = null;
}
}
它运行得非常快,我真的不在乎它是否可以优化。
链接地址: http://www.djcxy.com/p/35717.html上一篇: How can I verify that Excel interop objects are cleaned up properly?
下一篇: Excel Interop CustomDocumentProperties in foreach Causes Hang