2015-01-28 2 views
1

내 프로젝트에 함께 사용해야하는 하드웨어 구성 요소가 여러 개 있습니다.STA 응용 프로그램의 MTA 사용자 컨트롤

나는 내 프로젝트의 일부로 BlakcMagic SDK를 통해 성공적으로 액세스 한 BlackMagic Decklink 비디오 카드를 가지고 있습니다.

저는 별도의 프로젝트에서 사용자 정의 컨트롤을 개발했으며 이제는이 코드를 주 프로젝트와 통합하려고합니다.

내가 가지고있는 유일한 문제는 BlackMagic 인터페이스에는 MTA 모델이 필요하며 주 프로젝트는 STA 모델이며 다른 하드웨어 인터페이스로 인해 그대로 유지되어야한다는 것입니다.

제 질문은 STA 환경에서 MTA 사용자 컨트롤의 인스턴스를 어떻게 구체화 할 수 있습니까?

+0

불가능합니다. UserControl은 항상 STA 스레드에서 실행되어야합니다. 당신은 자신의 Thread를 생성하고, * thread에 COM 객체를 생성해야한다. –

+0

도움을 주셔서 감사합니다,하지만 어떻게 작동하게하는지 알아 냈습니다. 나는 콜백과 함께 객체를 인스턴스화하는 메소드 앞에 한정자 '[MTAThread]' 을 추가했습니다. 이제 내 MTA 사용자 정의 컨트롤이 STA 환경에서 작동합니다. – EinsteinKiller

+1

아니요, 아무 것도하지 않습니다. 속성은 Main() 진입 점에서만 유효합니다. GUI 응용 프로그램의 [STAThread] 여야합니다. 실제로 무엇이 잘못되었는지 전혀 알 수 없다고해서 도움이되지 않습니다. –

답변

-1

여기에 트릭은 문을 추가하는 것입니다 : 부모의로드 방법에 앞에

[MTAThread]

. 이 경우 usercontrol을 다른 양식으로 캡슐화하고 form_load() {} 앞에 문을 추가했습니다.

그런 다음 결과 UserControl은 MTA 모델에 존재합니다.

관련 문제