如何validationExcel互操作对象是否正确清理?

我在我的项目中实例化Excel互操作对象。 我知道清理这些对象需要特别的努力(见这个问题 )。 有没有自动的方法来validation清理是否正确完成?

详细说明,我知道,如果清理工作不正确,Excel.exe可能会在调用Application.Quit后继续运行。 但是,我不清楚这是否是一个可靠的testing条件。 而且,由于一个持续不断的Excel.exe过程只是真正的function障碍的一个症状,如果存在这样的情况,使用更接近根本原因的testing条件似乎更可取。

当完成使用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; } } 

它运行得非常快,我真的不在乎它是否可以优化。