사용 후 DB Command를 폐기해야 합니까?
Enterprise Library 3.0을 사용하여 Oracle DB(마이크로소프트 오라클 클라이언트)에 액세스합니다.저장 프로시저 또는 함수가 호출된 후 DB Command 인스턴스를 삭제하지 않으면 어떻게 됩니까?한다.NET 자동 가비지 수집?트랜잭션/연결이 닫히고 올바르게 처리되는지 확인합니다.
이것은 복제품이지만, 원본을 찾을 시간이 없습니다.
ID가 일회용으로 구현되고 사용자가 ID를 만든 경우에는 해당 ID에 대해 Dispose를 호출해야 합니다.그래서 클래스의 개발자가 ID를 일회용으로 구현하도록 한 것입니다.
가비지 수집기가 모든 ID 일회용 구현 개체에 대해 삭제를 호출하지는 않습니다.
Reflector는 다음을 나타내지 않습니다.OracleCommand
구체적으로 Dispose(폐기)를 재정의합니다.System.ComponentModel.Component
의 구현)을 참조하십시오. 따라서 호출하지 않아도 응용 프로그램에 큰 영향을 미치지 않을 수 있습니다.
하지만 중요한 것은OracleCommand
구체적으로 실행하는IDbCommand
구체적으로 구현하는 것.IDisposable
만약 당신이 당신의 것을(를)OracleCommand
다른 것과 함께IDbCommand
그러면 당신은 아마도 사용하기를 원할 것입니다.Dispose()
그리고 그 사이에SqlCommand
명시적으로 재정의하지 않습니다.Dispose()
Odbc와 OleDb는 확실히 그렇습니다.
요컨대.IDisposable
당신은 안전한 쪽에 있기 위해서 그것을 처분해야 합니다.
다음에 대한 설명서에서 확인IDisposable
:
이 인터페이스의 기본적인 용도는 관리되지 않는 리소스를 해제하는 것입니다.가비지 수집기는 관리 개체가 더 이상 사용되지 않으면 해당 개체에 할당된 메모리를 자동으로 해제합니다.그러나 가비지 수집이 언제 발생할지 예측할 수 없습니다.또한 가비지 수집기는 창 핸들이나 열린 파일 및 스트림과 같은 관리되지 않는 리소스에 대한 지식이 없습니다.
가비지 수집기와 함께 관리되지 않는 리소스를 명시적으로 릴리스하려면 이 인터페이스의 폐기 방법을 사용합니다.개체의 소비자는 개체가 더 이상 필요하지 않을 때 이 메서드를 호출할 수 있습니다.
이것을 고려할 때, 구현하는 객체는IDisposable
관리되지 않는 리소스에 대한 참조를 유지할 수 있습니다.이러한 리소스는 가비지 수집기가 와서 개체를 수집할 때까지 릴리스되지 않습니다.그러나 가비지 수집기가 언제 이 작업을 수행할지 알 수 없기 때문에 일회용 개체(예:OracleDbCommand
당신이 원하는 것보다 훨씬 더 오래 머물 수 있습니다.
가 구현하는 경우. 경우를 구현하는 IDisposable
가능한 한 빨리 호출하여 참조가 포함된 관리되지 않는 리소스를 해제해야 합니다.이 작업은 전화를 통해 수행할 수 있습니다.Dispose
직접 또는 사용 블록 내에서 선언함으로써.
Oracle에 대해 100% 확신할 수는 없지만 SqlCommand를 사용할 때는 사용 후 폐기해야 합니다.그냥 전화하셔도 됩니다.다음과 같이 폐기()하거나 사용 블록에 넣습니다.
using(DbCommand cmd = new DbCommand(foo, bar))
{
// use cmd object
}
언급URL : https://stackoverflow.com/questions/1070667/is-is-necessary-to-dispose-dbcommand-after-use
'programing' 카테고리의 다른 글
어떻게 하면 호버링되는 동안 부트스트랩 팝오버를 유지할 수 있습니까? (0) | 2023.08.10 |
---|---|
CodeIgniter의 활성 레코드 메서드를 사용하여 ORDER BY 절을 추가하는 방법은 무엇입니까? (0) | 2023.08.10 |
도커 합성을 사용하여 mysql의 기본 문자 집합을 변경하는 방법은 무엇입니까? (0) | 2023.08.10 |
assert(0)의 의미는 무엇입니까? (0) | 2023.08.10 |
도커에서 종속된 하위 이미지 목록을 가져오는 방법은 무엇입니까? (0) | 2023.08.05 |