Из статьи MSDN в STAThread:
Указывает, что модель поточной передачи COM для приложения представляет собой однопоточную квартиру (STA).
(Для справки, вся статья.)
Однопоточная квартира... Хорошо, это перевернуло мне голову. Кроме того, я где-то читал, что, если ваше приложение не использует COM-взаимодействие, этот атрибут фактически ничего не делает. Итак, что именно он делает и как это влияет на многопоточные приложения? Должны ли многопоточные приложения (которые включают в себя что-либо от любого пользователя, использующего Timer
для асинхронных вызовов методов, а не только для потоков и т.д.), Использовать MTAThread, даже если это "просто безопасно"? Что действительно делают STAThread и MTAThread?