Во-первых, ваше предположение неверно: COM-объект не может быть создан вне любой квартиры. Обычно поток должен создавать COM-объекты только в том случае, если он ранее назывался CoInitialize или CoInitializeEx, который размещает его в квартире. В противном случае создание обычно не удастся. Существует крайний случай неявной многопоточной квартиры (если другой поток того же процесса инициализировал ее), но даже тогда вы были бы в MTA, просто ненадежным и трудным для отладки способом. COM-объект никогда не существует, не находясь в квартире.
Причина, по которой вы хотите MTA, заключается в том, что это не обязательно единственная квартира. Процесс может иметь один MTA и произвольно много STA. Звонки между MTA и любой из STA все еще должны быть упорядочены; в противном случае один из потоков MTA мог бы вызывать поток STA небезопасным способом.
Фактически наличие хотя бы одной STA является правилом, а не исключением: пользовательский интерфейс хочет жить в STA, потому что он зависит от сообщений (например, из-за щелчков мыши и т. Д.), Которые должны обрабатываться последовательно.