Winforms : 한 COM 객체에는 stathread가 필요하고 다른 하나는 mtathread가 필요합니다. 어떻게 사용할 수 있습니까?
-
19-09-2019 - |
문제
두 개의 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();
제휴하지 않습니다 StackOverflow