SqlConnection을 사용할 때는 .Close() 또는 "using"에 SqlConnection을 배치하여 항상 닫는 것이 중요합니다. 불행히도, 나 자신을 포함한 사람들은 이것을 잊어 버리는 경향이 있습니다. 이것은 가비지 수집자가 너무 자주 내 연결을 닫지 않았거나 응용 프로그램을 사용하는 사람들의 수가 늘어날 때까지 잠시 동안 나를 구해줍니다.가비지 수집기가 호출되었는지 감지 (.Net)
가비지 수집기가 SqlConnection을 폐기했는지 여부를 감지하는 방법을 알고 싶습니다. SqlConnection이 더 이상 사용되지 않았거나 SqlConnection이 올바른 방법으로 종료 된 것으로 판단 되었기 때문입니다.
다른 방법으로는 SqlConnection을 상속 받아 초기화 프로그램에 타이머를 넣고 클래스를 삭제할 때 연결이 닫히는 데 걸린 시간을 확인할 수 있습니다. 나는 타이머를 정말 좋아하지 않지만 이것을 쓰는 동안 아이디어가 떠올랐다.
어쩌면이 모든면에서 세 번째로 더 똑똑한 방법이있을 것입니다. 무엇을 권하고 싶습니까?
'중 .Close에 의해() 또는도록 SqlConnection을 배치 -
(. 자원 누수를 다루는 더 나은 전략이 있습니다.이 답변은 가비지 컬렉터가 실행 탐지에 적용 나는 완전히이 일에 대한 이유를 무시) "사용하기"에서 ** NO NO NO! ** .Close()는 그 자체만으로는 충분하지 않습니다. 이것이'using' 구조의 핵심입니다. 너무 많은 사람들은 .Close() _가 반드시 finally 블록 내에 있어야 함을 잊어 버립니다. –