Un thread qui crée des fenêtres doit toujours créer un appartement monothread. Une STA fournit des garanties de thread pour tout objet COM qui n'est pas thread-safe. Très peu sont. L'infrastructure COM garantit que les méthodes d'un tel objet sont toujours appelées depuis le bon thread, en marshaling l'appel si nécessaire. Tout à fait similaire à Control.Begin/Invoke() mais fait automatiquement sans codage.
Un certain nombre d'installations Windows reposent sur cette garantie. Notamment le Presse-papiers, Drag + Drop et les boîtes de dialogue shell (comme OpenFileDialog) ne fonctionneront pas correctement sans elle. Et beaucoup de contrôles ActiveX, WebBrowser étant un commun que vous utiliserez dans un projet Winforms. Faire de votre thread d'interface utilisateur un thread MTA provoque un diagnostic difficile de l'échec, l'impasse étant une commune. Ou une exception rapide lorsque l'encapsuleur .NET pour le composant vérifie deux fois qu'il a été créé sur un STA.