Winforms : 한 COM 객체에는 stathread가 필요하고 다른 하나는 mtathread가 필요합니다. 어떻게 사용할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1521816

문제

두 개의 COM 구성 요소가있는 WinForms 응용 프로그램을 작성하려고합니다. 그러나 구성 요소 중 하나는 사용할 때만 작동합니다. [MTAThread] 다른 하나는 함께 작동합니다 [STAThread].

권장 솔루션은 무엇입니까?

도움이 되었습니까?

해결책

Windows 양식은 [Stathread]가 주 진입 점에 존재해야합니다. 단일 나사산 아파트 상태에서만 작동합니다. 문제없이 Windows 양식의 UI 스레드에서 STA COM 객체를 사용할 수 있습니다.

이것에 대한 일반적인 접근법은 자신의 스레드를 만들고 Thread.ApArtmentState 별도의 스레드의 MTA (기본값이지만)에게. 이 스레드 내에서 MTA- 스레드 COM 구성 요소를 초기화하고 사용하십시오.

ThreadStart threadEntryPoint = ...;

var thread = new Thread(threadEntryPoint);
thread.ApartmentState = ApartmentState.MTA;  // set this before you call Start()!
thread.Start();
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top