내 코드는 파일 내가 초기화 된 OleDbException에 처분 전화 후에도 처리 해제하지 않습니다 취급 놓습니다. 명시 적으로 프로그램이 파일 핸들을 해제하도록 강제하는 방법이 있습니까?
3
A
답변
4
기본적으로 .NET 데이터베이스 연결에는 pooling이 사용됩니다. Close()
과 Dispose()
을 호출하면 풀에 연결이 해제되고 실제로 강제로 닫히지 않습니다. 결국 그것은 풀에서 시간이 초과되고 실제로 닫힙니다. 연구의 조금 후
-
연결 문자열에
- 안 풀링 - 풀링을 제외하고 당신에게 모든 서비스를 제공해야하는
- 후자는 제한 시간 함께 플레이 할 수도 있습니다 접근을 위해
OleDBConnection.ReleaseObjectPool()
OLE DB Services = -2;
를 추가하려고
을 활용하는 것을 시도하십시오 - 링크 MSDN 문서에서 발췌 :
메서드 만 호출해도 실제로 풀에있는 활성 연결은 해제되지 않습니다.
하면 풀이 마지막으로 배치되기 전에 발생해야 다음 닫기
- 전화는 풀에 연결 개체를 반환합니다.
- 각 연결 개체가 풀에서 시간 초과되도록 허용하십시오.
- ReleaseObjectPool을 호출하십시오.
- 가비지 수집을 호출하십시오.
나는 어떤 사내 소프트웨어, 오래된 유연성, 색다른 및 절대적으로 중요 독점 소프트웨어의 조각과 상호 작용해야하는 작업에서 이것에 대한 사용 사례가 있습니다. 다른 소프트웨어가 "문제가 될 수있는"창을 최소화하기 위해 가능한 한 짧은 시간 동안 공유 MDB 데이터베이스 파일을 열어야합니다 (아주 나쁜 것).
닫기를 보장하는 것이 더 간단 해 보이고 내 소프트웨어가 실제로 풀에서 이익을 얻지 못하기 때문에 연결 문자열 접근 방식을 사용할 계획입니다.
0
아니 그 뒤에서) (닫기 호출 이후 코드는 폐기()를 호출 한 후 핸들을 닫지 않지만, 다음은 당신이 일반적으로 보이는 방식으로 코드를 작성하는 데 도움 수 있습니다 이유를 확인하십시오
using (OleDbConnection conn = new OleDbConnection(connString))
{
//your stuff here
conn.Close(); //not necessary, but doesn't hurt
}
을
예외가 발생했는지 여부에 관계없이 핸들을 닫습니다. 블록을 사용하면 블록 끝의 자원을 닫거나 폐기합니다.
관련 문제
- 1. 는 어떻게이 텍스트 파일이
- 2. 템플릿 기반 개체를 강제하는 것은 내가 가상의 클래스가
- 3. 는 내가하고 싶은 것은 간단한데
- 4. .swf 파일이 압축된다는 것은 무엇을 의미합니까?
- 5. 는 OleDbConnection 새로운 엑셀 내가 새로운 파일을 엑셀 만들 수는 OleDbConnection을 사용할 필요가
- 6. 힌트로 해석을 강제하는 방법
- 7. 는 평 파일을 실행 그것을 인수를주고 그것의 반환을 기다리는 것은
- 8. OledbConnection을 사용할 때 오류가 계속 발생합니다.
- 9. 는 PDF 파일이 코드를 수행 한
- 10. 는 파일이 비용이 많이 드는 작업
- 11. FileExists()는 파일이 있어도 false를 반환합니다.
- 12. https를 강제하는 법
- 13. 안전하게 맥의 종료를 강제하는 방법
- 14. oledbconnection을 사용하여 모든 행을 데이터 테이블로 가져 오지 못함
- 15. StyleCop에서 개인 메소드의 문서화를 강제하는 방법은 무엇입니까?
- 16. 는
- 17. 는
- 18. 것은
- 19. 것은
- 20. 것은
- 21. 것은
- 22. 것은
- 23. 것은
- 24. 것은
- 25. 것은
- 26. 것은
- 27. 것은
- 28. 것은
- 29. 것은
- 30. 것은
정말 이상합니다. 나는 실제로 처분하고 닫을 것을 요청하고있다. – Jonn