ADO 이벤트 처리
ADO 이벤트 모델은 작업이 시작되기 전이나 완료된 후에 이벤트 또는 알림을 발급하는 특정 동기 및 비동기 ADO 작업을 지원합니다. 이벤트는 실제로 애플리케이션에서 정의하는 이벤트 처리기 루틴에 대한 호출입니다.
작업이 시작되기 전에 발생하는 이벤트 그룹에 대한 처리기 함수 또는 프로시저를 제공하는 경우 작업에 전달된 매개 변수를 검사하거나 수정할 수 있습니다. 아직 실행되지 않았으므로 작업을 취소하거나 완료하도록 허용할 수 있습니다.
ADO를 비동기적으로 사용하는 경우 작업이 완료된 후에 발생하는 이벤트는 특히 중요합니다. 예를 들어 비동기 Recordset.Open 작업을 시작하는 애플리케이션은 작업이 종료될 때 실행 완료 이벤트에 의해 알림을 받습니다.
ADO 이벤트 모델을 사용하면 애플리케이션에 약간의 오버헤드가 추가되지만 루프를 사용하여 개체의 State 속성을 모니터링하는 등 비동기 작업을 처리하는 다른 방법보다 훨씬 더 많은 유연성을 제공합니다.
참고 항목
이벤트를 처리하려면 ADO에 메시지 펌프가 있거나 STA(단일 스레드 아파트) 모델에서 사용해야 합니다. ADO 이벤트는 숨겨진 창을 만들어 내부적으로 처리됩니다. 이벤트를 발생시켜야 하는 경우 ADO는 이 창에 메시지를 게시합니다. 이 작업은 연결점에 대한 IConnectionPoint::Advise라는 스레드로 이벤트가 전송되도록 하기 위해 수행됩니다. 이 아키텍처는 알림을 받아야 하는 스레드가 창 메시지를 펌프하지 않는 경우 문제를 일으킬 수 있습니다. 잠재적인 문제로, ADO 이벤트가 스레드에 배달되지 않고 전역 창 브로드캐스트 시간이 초과되고 숨겨진 창이 메시지를 처리하지 않기 때문에 전체 시스템 속도가 느려질 수 있습니다. STA 스레드에는 일반적으로 메시지 펌프가 실행되므로 이 문제는 STA 스레드에서 자체적으로 나타나지 않습니다. 그러나 MTA 스레드에는 일반적으로 메시지 펌프가 없으므로 일반적으로 MTA 스레드에서 문제가 나타납니다.
이 섹션에서는 다음 항목을 다룹니다.