AFAIK, все приложения Windows Forms должны установить директиву [STAThread]
над их методом Main()
.Требование STAThread для форм Windows
Однако есть исключение. Мы пишем приложения для устройств Windows Mobile, используя Compact Framework. Компактная конструкция даже не поддерживает директиву [STAThread]
, она имеет только [MTAThread]
. Тем не менее, я никогда не сталкивался с какими-либо проблемами.
Теперь, чтобы сделать это на 1 шаг дальше, вы также можете запускать приложения Compact Framework на полностью раздутой системе Windows. Я думаю, что в этом случае будет использоваться полномасштабная .NET-платформа.
В этот момент мы запускаем код с состоянием квартиры MTA
, в котором используются формы окон на полностью раздутой системе окон. Это подводит меня к вопросу: , если приложение с компактными рамами работает на полностью раздутой операционной системе Windows, почему он не жалуется на недостающую директиву [STAThread]
?
См. Https://social.msdn.microsoft.com/Forums/en-US/d5b637f4-56f6-417a-a004-851c8e7ca01f/stathread-can-not-be-found-but-where-is-it? forum = netfxcompact «Нет, вы ничего не пропустили - в NETCF нет такого атрибута, и нет никакого способа заставить поведение STA. MTA - единственный поддерживаемый режим, и вам не нужна STA на NETCF». – josef