엑셀 시트를 가져 오는 도구를 만들었습니다. 엑셀 COM 개체는 앱의 수명 동안 생성됩니다. 내 도구에 MVP 패턴을 적용하여 VIEW와 Presenter가 UI와 로직을 분리하도록했습니다..NET에서 Excel COM 개체를 해제 할 수 없습니다.
WinForm 인 vIEW는 Deisgner 코드에서 재정의 된 From 클래스의 상속으로 인해 Dispose() 메서드를 사용하고 있습니다.
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
_presenter.Dispose();
}
그게 말 그대로 내가 자체가 관리되지 않는 COM 개체를 포함 아직 관리 코드이지만, 내 발표자, O를 내 처분 호출을 삽입 할 곳.
발표자
다음이를 수행하여 COM 개체를 해제하려고 :public void Dispose()
{
Int32 countDown = 1;
while (countDown > 0)
countDown = Marshal.ReleaseComObject(_excelObj);
}
난 아무것도 가져 오지 않고 응용 프로그램을 열면 엑셀 과정은 TEH 응용 프로그램을 닫은 후 사라집니다. 시트를 가져 오기 위해 앱을 사용하는 경우 엑셀 개체가 더 이상 이동하지 않고 메모리에 남아 있습니다. 심지어 작업이 성공적으로 실행되거나 취소 된 경우에도 마찬가지입니다.
내가 더 저를 도와 좋은 링크를 발견,하지만 문제는 여전히 남아있다 : 도움을 How do I ensure that objects are disposed of properly in .NET?
감사합니다,
답변을 게시하기에 충분한 세부 사항을 모르지만 Excel 개체 모델에 어딘가에 종료 메서드가 있습니까? 나는 Word의 객체 모델을 기억하고 있으며 서버를 언로드하기 위해 명시 적으로 호출해야한다고 생각합니다. –