다음을 통해 공유


CONNECT 샘플: 연결 지점 구현 및 사용 설명(C++ 샘플)

업데이트: 2007년 11월

이 샘플에서는 다중 스레드 환경에서 IConnectionPointContainerIConnectionPoint 인터페이스 등의 연결 지점을 구현하고 사용하는 방법을 보여 줍니다.

참고:

이 샘플은 연결 지점 싱크에 대한 컴파일러 COM 지원을 보여 주기 위해 ATL 샘플인 Connect를 수정한 것입니다. Drive 클라이언트는 네이티브 구현에 해당하지만 MDrive 클라이언트는 클래스 팩터리를 사용하여 싱크 개체를 만들기 때문에 COM을 정확하게 구현하는 데 약간의 문제가 있습니다. Drive와MDrive는 모두 COM 지원을 위해 ATL나 MFC를 사용하지 않습니다.

보안 정보:

이 샘플 코드는 개념을 보여 주기 위해 제공되며 가장 안전한 코드 작성 방법을 제시하지 않을 수 있으므로 응용 프로그램이나 웹 사이트에서 사용할 수 없습니다. Microsoft는 샘플 코드를 원래 용도 이외의 다른 용도로 사용하는 경우 발생하는 부수적이나 파생적인 손해에 대해 책임을 지지 않습니다.

샘플 및 이를 설치하기 위한 지침을 가져오려면

  • Visual Studio의 도움말 메뉴에서 샘플을 클릭합니다.

    자세한 내용은 샘플 파일 찾기를 참조하십시오.

  • 최신 버전 및 전체 샘플 목록은 Visual Studio 2008 Samples 페이지에서 온라인으로 사용할 수 있습니다.

  • 컴퓨터의 하드 디스크에서도 샘플을 찾을 수 있습니다. 기본적으로 샘플과 추가 정보 파일은 \Program Files\Visual Studio 9.0\Samples\ 아래의 폴더에 복사됩니다. Visual Studio Express Edition의 경우에는 모든 샘플이 온라인에 있습니다.

샘플 빌드 및 실행

이 샘플을 빌드하고 실행하려면

  1. connect.sln 솔루션을 엽니다.

  2. 빌드 메뉴에서 솔루션 빌드를 클릭합니다.

  3. Drive 또는 MDrive 중에서 실행할 클라이언트를 선택한 다음 이 클라이언트를 시작 프로젝트로 만듭니다. 이때 해당 프로젝트 폴더를 마우스 오른쪽 단추로 클릭하고 시작 프로젝트로 설정을 클릭하면 됩니다. 클라이언트에 대한 자세한 내용은 샘플 작동 방식 단원을 참조하십시오.

  4. 디버그 메뉴에서 디버깅하지 않고 시작을 클릭합니다.

샘플 작동 방식

서버는 Connect.dll에서 구현됩니다. 이 DLL을 사용하면 CRandom C++ 클래스에 의해 구현되는 CoRandom COM 개체를 만들 수 있습니다. 이 COM 개체는 IRandom(이중 인터페이스) 및 IConnectionPointContainer를 지원하며 IRandomEvent 인터페이스에 대한 연결을 허용합니다.

IRandom 인터페이스는 다음 메서드를 지원합니다.

  • Start   개체 내에서 스레드를 시작합니다.

  • Stop   개체 내에서 스레드를 중지합니다.

  • StopAll   실행 중인 모든 스레드를 중지합니다.

개체 내의 보조 스레드는 실행되는 동안 연결 지점을 통해 이벤트를 계속 발생시킵니다.

이때 Drive와 MDrive라는 두 개의 클라이언트가 제공됩니다. 이러한 클라이언트는 Drive와 MDrive 하위 디렉터리에서 찾을 수 있습니다.

  • Drive.exe는 IRandomEvent 인터페이스를 구현하는 단일 개체를 제공하는 간단한 콘솔 응용 프로그램입니다. 이 응용 프로그램은 CoRandom 개체를 만들고 연결 지점에서 Advise와 Unadvise를 호출하며 CoRandom 개체가 드라이브의 개체 내에 이벤트를 발생시키도록 합니다.

  • Mdrive.exe는 여러 어드바이스 싱크를 만들고 서버에서 만드는 스레드의 수를 제어할 수 있는 MFC 대화 상자 기반 응용 프로그램입니다. Mdrive.exe를 실행할 때는 Start 단추를 적어도 한 번 클릭한 다음 Advise 단추를 여러 번 클릭합니다. Advise 단추를 클릭할 때마다 연결 지점이 추가되어 화면 표시 영역이 더 넓어집니다. Advise 단추를 클릭하지 않으면 화면 표시 영역에 아무 작업도 나타나지 않습니다.

참고 항목

참조

Compiler COM Support

기타 리소스

컴파일러 COM 지원 샘플