문제

나는 내가 상속받은 기존 .NET 1.1 프로젝트에서 DataReaders를 정리하고 있습니다.

이전 개발자는 대부분의 DAL 메소드가 SQLDATAREADERS를 반환하는 방식으로 데이터 액세스 계층을 코딩했습니다 (따라서 .Close () 또는 .dispose () 메소드를 올바르게 호출하기 위해 발신자에게 맡기십시오.

그러나 발신자가 반환 된 SQLDATAREADER를 잡지 않는 상황을 발견했습니다 (따라서 제대로 처분하지 않습니다). 아래 코드를 참조하십시오.

데이터 액세스 방법 :

Public Shared Function UpdateData() As SqlDataReader
   ...

   drSQL = cmdSQL.ExecuteReader(CommandBehavior.CloseConnection)

   Return drSQL

End Function

통화 코드 :

...
DataAccessLayer.UpdateData()
...

보시다시피, 호출 방법은 반환 된 SQLDATAREADER를 수신/잡지 않습니다. 그래서 어떻게됩니까? 그 sqldatareader가 아직도 열려 있습니까? 아니면 아무것도 해결되지 않기 때문에 자동으로 쓰레기를 수집합니까?

나는 이것을 디버깅하고 테스트하는 방법을 생각할 수 없었습니다. 누군가가 큰 아이디어 나 제안이 있다면.

도움이 되었습니까?

해결책

나는 그것이 문을 닫을 것이라고 믿지만 쓰레기 수집가가 '둥글게 될 때까지는 아니라고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top