2017-10-12 14 views
0

은 "잘못"스레드 (예를 들어, Clipboard::SetContent(...)), 나는 다음과 같은 메시지가 표시에서 (STA) 함수는 단일 스레드 아파트 전화를 시도 할 때 : MTA가에서 단일 스레드 클래스를 활성화WinRT/UWP 오류 'MTA에서 단일 스레드 클래스 활성화가 지원되지 않습니다.'가 표시되면 어떻게 C++에서 함수를 호출 할 수 있습니까?

지원되지 않습니다.

어떤 기능이 STA인지는 분명하지 않으므로 외관상으로 무고한 기능에서 튀어 나온 것처럼 보입니다. 문제를 해결하는 단계를 설명하는 간단한 답을 찾을 수 없습니다. Windows COM 설명서는 따라하기가 어렵습니다.

이 오류를 방지하기 위해 STA 기능이 무엇인지 안정적으로 식별 할 수 있습니까? 간단한 수정이 없는가?

+1

인용구 : "이 클래스는 민첩하지 않습니다. 즉, 스레딩 모델 및 마샬링 동작을 고려해야합니다. 자세한 내용은 ..."을 참조하십시오. 어쩌면 그것은 들리 겠지만, 잠시 후에는 문서와 예외 사이의 연결을 보게 될 것입니다. 그것에 대해 무엇을해야하는지 알려주는 "참조"노트의 링크가 있습니다. –

+0

네, 저는 아래 답변을 어떻게 생각해 냈는지 모든 것을 보았습니다. 이 질문을 추가하는 요점은 STA/MTA 지뢰를 밟았을 때 외상을 남겨 두는 것이 었습니다. –

답변

0

문제는 현재 실행중인 스레드가 MTA (멀티 스레드 아파트)이며 STA 호출을 지원하지 않는다는 것입니다.

수정 사항은 기본/UI 스레드 (항상 STA이므로 STA 호출을 지원하는)에서 호출을 보내도록 수정되었습니다.

먼저 원하는 스레드를 MainView->CoreWindow으로 가져온 다음 해당 스레드의 디스패처를 호출하여 실행하고자하는 것이 무엇이든지 호출하십시오. 예 :

+0

문제를 해결 한 후에 나중에이 스레드를 방문하는 편리한 사람들에게이를 허용으로 표시하십시오. 이해해 주셔서 감사합니다. –