C# 응용 프로그램에서 지속적인 엑셀 프로세스 문제 해결
COM 객체를 관리하기위한 강력한 릴리스-수집 정기 전략을 구현했지만 애플리케이션 폐쇄 후 Excel 프로세스는 활성화되어 있습니다. 이것은 C# 응용 프로그램 내의 COM 객체에 대한 참조를 지적합니다.
일반 범인은 명시 적 변수 할당없이 COM 개체 멤버를 암시 적으로 참조하고 있습니다. 워크 시트
개체를 사용하여 다음 예제를 고려하십시오 :
excelApp.Worksheets.Open(...);
이 겉보기에는 무해한 라인이 워크 시트
com 객체에 대한 숨겨진 참조를 만듭니다.
솔루션 : 명시 적 변수 할당 및 릴리스
솔루션은 명시 적 변수 할당 및 그에 따른 COM 개체의 릴리스에 있습니다 :
Worksheets sheets = excelApp.Worksheets;
Worksheet sheet = sheets.Open(...);
// ... your code ...
Marshal.ReleaseComObject(sheet);
Marshal.ReleaseComObject(sheets);
이 접근 방식은 객체의 수명주기를 정확하게 제어하여 적절한 처리를 가능하게합니다.
주요 모범 사례 : Chained COM 객체 액세스를 피하십시오
결정적으로 C#:두 개의 점을 사용하여 멤버 액세스 체인을 피하십시오. 이것은 코드를 자제하는 것을 의미합니다.
excelApp.Worksheets.Open(...);
항상 위에서 설명한 명시 적 변수 할당 방법을 선택합니다. 이러한 모범 사례를 준수함으로써 COM 객체 수명을 효과적으로 관리하여 응용 프로그램 폐쇄시 Excel 프로세스가 깨끗하게 종료되도록합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3