멀티 스레딩 : STAThread 및 STAThread에 대한 MSDN 문서에서
는 응용 프로그램에 대한 COM 스레딩 모델이 단일 스레드 아파트 (STA)이 있음을 나타냅니다.
는 (참고로, 그 the entire article입니다.)
내 머리 위로 넘어가 단일 스레드 아파트 ... OK. 또한 응용 프로그램에서 COM interop을 사용하지 않는 한이 특성은 실제로 아무 것도 수행하지 않습니다. 그렇다면 정확하게 무엇을 할 것이며 다중 스레드 응용 프로그램에 어떤 영향을 미치나요? MTThread를 사용하는 다중 스레드 응용 프로그램 (Timer
을 사용하는 사람에서 스레드 풀 등이 아닌 비동기 메서드 호출에 이르기까지)이 '안전 할 것'이라 할지라도 MTAThread를 사용해야합니까? STAThread와 MTAThread는 실제로 무엇을합니까?
지나치게 단순화되었습니다. 다중 스레드 오브젝트는 모든 스레드에서 실행할 수 있습니다. 아파트 스레드 개체는 만든 아파트에서만 실행할 수 있습니다. –
STA 스레드에서 MTA 개체에 대한 STA 개체 호출은 MTA 개체가 무료 스레드 마샬 러를 구현하지 않는 한 MTA 스레드로 마샬링합니다. . 내가 말했듯이 세부 사항은 복잡해 질 수 있습니다. (나는 COM 팀에서 여러 해 동안 일했습니다. * 웃어 넘기 *) – Bruce
때때로 COM을 직접 사용하지 않더라도 이것을 알고 있어야합니다. 그래픽 창을 표시하는 스레드는 단일 스레드 아파트 모델을 사용해야합니다. 이것이 [STAThread]가 항상 Windows 양식 응용 프로그램의 기본 메서드 위에 표시되는 이유입니다. –