[c# ThreadApartment] ActiveX 컨트롤 , COM 객체를 새로운 쓰레드에서 접근할때



예를 들어 새로운 쓰레드의 새로운폼 에서 아래와 같이 AX 객체를 생성하면,,



이러한 에러를 내밷는다..


왜,, 사람들이 영문판을 쓸까? 하는 이유를 조금 알것 같다 , "아파트" , 도대체 ., 한국말로 아파트는 주택을 의미하는데 ,,

쓰레드가 내집마련의 꿈에 실패했다는 에러도 아니고 ...

그래서 axWindowsMediaPlayer1 에서 Thread 에러로 구글링해봐도 질문만 있지 누구하나 답변이 없었다.

그리고 msdn 포럼에 질문을 했다.

http://social.msdn.microsoft.com/Forums/ko-KR/visualcsharpko/thread/a541e7bd-d9c0-4729-a006-4269dfa1c054

요번에도 Boram Kang 님이 답을 해주셨다.

답은 : http://support.microsoft.com/kb/841295 

참고 : http://blogs.msdn.com/b/cbrumme/archive/2004/02/02/66219.aspx
         http://byung.egloos.com/3547030


사용법은
Thread 가 Start 되기 전에 지정하면 된다.

t = new Thread(startThread);
t.ApartmentState = ApartmentState.STA;
t.Start();


결과로 새로운 쓰레드에서 Ax 가 정상적으로 플레이 된다.



Yamecoder 야매코더_
C# 2011.01.20 10:37
Powerd by Tistory, designed by criuce
rss