Почему мое приложение C # работает в многопоточной квартире? - PullRequest
3 голосов
/ 02 сентября 2011

Это часть моего основного метода:

[STAThread]
static void Main(string[] args)
{
   #if !DEBUG
   try
   {
   #endif
   ApartmentState aps = System.Threading.Thread.CurrentThread.GetApartmentState();
   //System.Threading.Thread.CurrentThread.SetApartmentState(ApartmentState.STA);
   MessageBox.Show(aps.ToString());

В сообщении отображается MTA.Есть идеи, почему или с чего мне начать расследование?

Ответы [ 2 ]

2 голосов
/ 02 сентября 2011

Вам просто любопытно, или это вызвало какую-то другую проблему? Обычно это только проблема, если вы пытаетесь сделать некоторые типы взаимодействия COM в вашем основном методе. Windows по-прежнему будет работать в соответствующем ApartmentState.

В последнее время я не проверял, но раньше, независимо от атрибута, Visual Studio вызывал MTA. Вы пытались запустить свое приложение из-за пределов Visual Studio?

Если это только проблема в отладчике, снимите флажок «Включить процесс размещения Visual Studio» в разделе «Отладка» свойств вашего проекта.

1 голос
/ 02 сентября 2011

Этот атрибут устанавливает модель потока COM для приложения. Если ваше приложение не использует COM-взаимодействие, оно не будет иметь никакого эффекта.

С MSDN ,

Модели потоков COM имеют отношение только к приложениям, использующим COM Interop. Использование этого атрибута в приложении, которое не использует COM взаимодействие не имеет никакого эффекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...