|
몇몇의 프로그래머들이 DB connection이 전혀 다른 네트웍 연결로 생각을 하는 경우가 있습니다.
DB connection도 결국 (프로토콜마다 다를수 있지만) TCP 통신을 합니다. 즉 소켓 통신을 수행하는 하위단계 코딩이죠.
즉 DB connection 컴포넌트를 사용하실경우 해당 객체가 DB서버와 소켓 통신을 수행하는 결과물 입니다.
소켓통신은 동기와 비동기가 있습니다.
query 부분을 스레드로 돌려도 내부적으로 동기통신을 수행하면 해당 프로세스가 프로세스를 점유해버려서 다른 작업이 멈추게 되겠지요.
DB Connection 부분을 비동기 연결을 사용하시면 어떨까 합니다.
아래 부분은 MS에서 제공하는 설명 입니다. 참고 하시기 바랍니다.
----------------------------------------------------------------------------------------------------------------
종종 데이터베이스와 관련 된 작업은 쿼리 처리, 데이터 원본에 연결할 클라이언트에 결과 검색 데 시간이 걸릴 수 있습니다. ADO에서는 이러한 작업을 비동기적으로 수행 하는 방법을 제공 합니다. 이러한 기능을 통해 개발자는 진행률 대화 상자를 표시 하는 등 긴 작업을 하는 동안 다른 작업을 수행 하거나 사용자 작업을 취소 하는 기회를 제공도 수 있습니다.
Connection 개체의 Open 메서드를 Options 매개 변수를 사용 하 여 ADO의 비동기 연결을 설정할 수 있습니다. 다음 예제에서는 비동기 만듭니다 SQL Server 드라이버를 설정할 수에 대 한 연결에 대 한 대기를 사용 하 여 DSN 없는 연결 해당 연결에 대 한 연결 속성을 표시 합니다. 또한 연결 개체의 여러 속성을 설정 하려면 WITH 문의 사용을 보여 줍니다. 이 예제를 사용 하려면 Microsoft 데이터 액세스 구성 요소 (MDAC) 버전 2.1 이상을 설치 하면 Visual Studio 6.0 데이터 구성 요소에는에서 다운로드할 수 있어야 합니다.
----------------------------------------------------------------------------------------------------------------
성시완 님이 쓰신 글 :
: DB 쿼리가 시간이 좀 많이 걸려서 쓰레드를 만들어서 돌렸습니다.
: 쿼리가 완료되면 업데이트 쓰레드가 돌면서 업데이트 하게 만들었습니다.
: 그런데 DB 쿼리를 백그라운드 쓰레드로 돌려도 질의가 수행되는 동안에는 화면이 멈춰서 다른 작업이 안되네요.
: 혹시 제가 모르는게 있어서 그런가요?
: DB 쿼리 쓰레드는 화면 업데이트 없이 무조건 쿼리만 도는데도 그 시간동안은 화면이 멈통되네요.
: 혹시 해결책 아시는 분 답변 좀 부탁드립니다. 감사합니다.
|