2010-02-20 8 views
2

비디오 카메라를 나타내는 타사 ActiveX가 있습니다. (AcxCamera myCam;)비동기 작업 만들기

이 카메라를 Connect 메서드를 통해 비디오 스트림에 연결합니다. (myCam.Connect(url);)

AcxCamera는 Acx에서 상속 한 개체이므로 Connect 메서드를 "제어"할 수 있습니다.

이제는 동 기적으로 시작해야하는 카메라가 있습니다.

foreach(AcxCamera cam in myCams) 
    cam.BeginConnect(); 

것이 가능하다 : 내가 좋아하는 뭔가를 할 수 싶습니다

?

답변

1

ActiveX 컨트롤을 다루는 경우 STA 아파트에있는 후드 아래에서 COM 개체를 다루는 것이 거의 확실합니다. 이것은 컨트롤이 특정 스레드 (이 경우에는 UI)에 바인딩되었음을 의미합니다. 백그라운드 스레드에서 메서드를 호출하려고하면 CLR과 COM은 컨트롤이 친 화성을 가진 스레드에서 실제로 호출되도록합니다.

간단히 말해서, 멋진 스레드 로직을 사용하더라도 사용자가 원하는 것을 달성 할 수있는 가능성은 거의 없습니다.

+0

COM이 개체에 스레드로부터 안전하다고 COM에 알리지 않으면 COM은 개체에 도달 할 때 한 번에 둘 이상의 호출을 허용하지 않습니다. COM 개체가 스레드로부터 안전하다는 사실을 알게되면 개체가 여러 스레드에서 동시 메서드 호출을 허용 할 수 있습니다. – serhio