Ein Thread, der keine Fenster erstellt, sollte immer eine single-threaded Wohnung erstellen. Eine STA bietet Threading-Garantien für jedes COM-Objekt, das nicht Thread-sicher ist. Sehr wenige sind. Die COM-Infrastruktur stellt sicher, dass die Methoden eines solchen Objekts immer vom rechten Thread aus aufgerufen werden und den Aufruf bei Bedarf marshalieren. Ganz ähnlich wie Control.Begin/Invoke(), aber ohne jegliche Programmierung automatisch gemacht.
Eine Reihe von Windows-Einrichtungen verlassen sich auf diese Garantie. Insbesondere die Zwischenablage, Drag + Drop und die Shell-Dialoge (wie OpenFileDialog) funktionieren ohne sie nicht richtig. Und viele ActiveX-Steuerelemente, WebBrowser, der in einem Winforms-Projekt verwendet wird. Wenn Sie Ihren UI-Thread zu einem MTA-Thread machen, ist der Fehler schwer zu diagnostizieren, da es sich um einen häufigen Deadlock handelt. Oder eine schnelle Ausnahme, wenn der .NET-Wrapper für die Komponente überprüft, ob er in einer STA erstellt wurde.