문제

가능한 복제 :
STA와 MTA를 설명해 주시겠습니까?

모든 스레드 풀 스레드는 멀티 스레드 아파트에 있습니다.

-MSDN에 따라

그게 무슨 뜻입니까? 나는 멀티와 단일 스레드 아파트 모델의 차이점이 무엇인지 정말로 우려하고 있습니다. 아니면 아파트 모델은 무엇을 의미합니까? 나는 그것에 MSDN을 읽었고, 그것은 실제로 나에게 의미가 없습니다. 나는 아이디어가 있을지도 모르지만 여기에있는 누군가가 그것을 평범한 영어로 설명 할 수 있다고 생각하고있었습니다.

고마워, Anthony d

업데이트 1

이것을 찾았습니다STA와 MTA를 설명해 주시겠습니까?

누구든지 더 설명 할 수 있습니까?

업데이트 2

또한 이것이 스레드 풀에 어떻게 적용되는지에 대한 답변을 찾고 있으며, 이로 인해 조심해야 할 사항을 찾고 있습니다.

도움이 되었습니까?

해결책

STA (싱글 스레드 아파트)와 MTA (멀티 스레드 아파트)는 com. com 구성 요소는 단일 스레드로 액세스하도록 설계 될 수 있으며,이 경우에 호스팅됩니다. 스타, 또는 내부 스레드를 안전하게 만들 수 있고 MTA. 프로세스는 하나의 MTA 만 가질 수 있지만 많은 STA를 가질 수 있습니다. COM 구성 요소 만 소비하려는 경우 아파트를 구성 요소와 일치 시키거나 불쾌한 일이 발생한다는 것입니다.

다른 팁

실제로 STAS와 MTA는 .NET 코드에 영향을 미칩니다. 자세한 내용은 Chris Brumme의 블로그 항목을 참조하십시오.

https://devblogs.microsoft.com/cbrumme/apartments-and-pumping-in-theclr/

Stas가 .NET의 메시지를 펌핑하는 방법을 이해하는 것이 정말 중요합니다. 결과가 있습니다.

COM 객체가 단일 스레드 환경에 있다고 믿어야하는 경우 STA를 사용하십시오. 당신은 같은 스레드에 의해 생성과 모든 통화가 이루어질 것임을 보장받습니다. 스레드 로컬 스토리지를 안전하게 사용할 수 있으며 중요한 섹션을 사용할 필요가 없습니다.

COM 객체에 동시에 COM 객체에 액세스 할 수있는 경우 MTA를 사용하십시오. 가드가 제자리에 놓여 있지 않습니다.

다른 사람들이 지적했듯이, 그것은 일반적으로 .NET 응용 프로그램에 거의 영향을 미치지 않습니다.

그러나 단위 테스트에 사용 된 Microsoft 테스트 호스트는 실제로 STA에서 구현되어 있으므로 단위 테스트에서 수행 할 수있는 작업에 제한이 있습니다. 예를 들어, 당신은 할 수 없습니다 WaitAll a WaitHandle 단위 테스트에서 Microsoft의 테스트 호스트를 사용하는 것입니다.

com-interop을 수행하지 않는 한 걱정할 필요가 없습니다.이 경우 마샬링 문제가 있습니다. .NET 자체에 대한 영향이 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top