powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Что такое single-threaded apartment простыми словами?
12 сообщений из 12, страница 1 из 1
Что такое single-threaded apartment простыми словами?
    #39877209
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и зачем оно здесь?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
      [STAThread]
        static void Main()
        {
            if (System.Diagnostics.Process.GetProcessesByName(Application.ProductName).Length > 1)
            {
                MessageBox.Show("Приложение уже запущено", "Сообщение");
                return;
            }
            else
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new MainForm());
            }
        }
...
Рейтинг: 0 / 0
Что такое single-threaded apartment простыми словами?
    #39877212
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для COM-interop.
...
Рейтинг: 0 / 0
Что такое single-threaded apartment простыми словами?
    #39877214
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не используешь в приложении COM-объекты, то можешь удалить и не париться.
...
Рейтинг: 0 / 0
Что такое single-threaded apartment простыми словами?
    #39877227
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatЕсли не используешь в приложении COM-объекты, то можешь удалить и не париться.
можете привести пример COM объекта
стандартные контроллы в тулбоксе не они?
...
Рейтинг: 0 / 0
Что такое single-threaded apartment простыми словами?
    #39877228
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview,

Не. COM-объект это давно лигаси. Если ты специально их к проекту не цеплял (Add Reference -> COM), то их там и не будет.
...
Рейтинг: 0 / 0
Что такое single-threaded apartment простыми словами?
    #39877237
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatlisttoview,

Не. COM-объект это давно лигаси. Если ты специально их к проекту не цеплял (Add Reference -> COM), то их там и не будет.
ок, пасиб
...
Рейтинг: 0 / 0
Что такое single-threaded apartment простыми словами?
    #39877253
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatЕсли не используешь в приложении COM-объекты, то можешь удалить и не париться.
Эти COM-объекты могут быть под капотом классов фреймворка. Например, COM используют формсовые Clipboard и наследники FileDialog. WPF, кстати, тоже при компиляции генерит entry point с STA-атрибутом - видимо, там тоже где-то есть COM. Так что я бы не стал грохать этот атрибут - сильно он не мешается, а последствия его отсутствия могут быть непредсказуемыми.
...
Рейтинг: 0 / 0
Что такое single-threaded apartment простыми словами?
    #39880148
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Присоединюсь к вопросу - что конкретно этот STA? Что основной поток всегда будет жить в изначальном потоке? А он в MTA разве прыгает по пулу? Тоже непонятно это, поясните плиз.
...
Рейтинг: 0 / 0
Что такое single-threaded apartment простыми словами?
    #39880155
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlПрисоединюсь к вопросу - что конкретно этот STA? Что основной поток всегда будет жить в изначальном потоке? А он в MTA разве прыгает по пулу? Тоже непонятно это, поясните плиз.
Каждый COM объект живет в некоторой логической хрени называемой "апартментом". Любой апартмент содержит или один поток (STA) - либо много потоков (MTA), причем каждый поток принадлеит тольько одному апртаменту и менять его не может. В приложении может быть несколько STA и максимум один MTA. И вот, теперь самое главное. Поток из одного апартамента может напрямую вызывать только COM-объект "живущий" в том же апартаменте, что и этот поток. В любом другом случае компонент может быть вызван только через COM-маршаллинг. И вот, еще, если у нас объект живет в каком-нибудь STA и мы хотим вызвать его из другого апартамента, то поток первого STA (где живет объект) должен быть виндовым UI-потоком (потому что маршаллинг такого вызова происходит через отправку сообщения в виндовую очередь сообщений). В общем, это тема довольно сложная и в двух словах не объяснить, но, надеюсь общую суть я передал.
...
Рейтинг: 0 / 0
Что такое single-threaded apartment простыми словами?
    #39880162
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. Это исключительно для COM и больше ни для чего? Из первого ответа не очень понятно.

COM я пользуюсь периодически, но слабо представляю что это такое, для меня это что-то вроде клиент-сервер с передачей в чем-то нейтральном типа JSON. Я знаю что я не прав, но насколько? Если просто например эксель из своей программы юзать что-то надо подучить?
...
Рейтинг: 0 / 0
Что такое single-threaded apartment простыми словами?
    #39880169
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlт.е. Это исключительно для COM и больше ни для чего?
Да, это исключительно для COM.

iskatelsqlCOM я пользуюсь периодически, но слабо представляю что это такое, для меня это что-то вроде клиент-сервер с передачей в чем-то нейтральном типа JSON. Я знаю что я не прав, но насколько? Если просто например эксель из своей программы юзать что-то надо подучить?
COM это очень большая отдельная тема - её изучать, это, считай, как изучать еще один .NET. С учетом того, что это уже очень легаси, изучать специально его смысла вообще нет. Делать просто все как в МСДН написано в разделе ".NET COM interop", а если уж какие-то проблемы, то обращатся к кому-нибудь, кто с этим лет 20 назад надрочился.
...
Рейтинг: 0 / 0
Что такое single-threaded apartment простыми словами?
    #39880273
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatiskatelsqlПрисоединюсь к вопросу - что конкретно этот STA? Что основной поток всегда будет жить в изначальном потоке? А он в MTA разве прыгает по пулу? Тоже непонятно это, поясните плиз.
Каждый COM объект живет в некоторой логической хрени называемой "апартментом". Любой апартмент содержит или один поток (STA) - либо много потоков (MTA), причем каждый поток принадлеит тольько одному апртаменту и менять его не может. В приложении может быть несколько STA и максимум один MTA. И вот, теперь самое главное. Поток из одного апартамента может напрямую вызывать только COM-объект "живущий" в том же апартаменте, что и этот поток. В любом другом случае компонент может быть вызван только через COM-маршаллинг. И вот, еще, если у нас объект живет в каком-нибудь STA и мы хотим вызвать его из другого апартамента, то поток первого STA (где живет объект) должен быть виндовым UI-потоком (потому что маршаллинг такого вызова происходит через отправку сообщения в виндовую очередь сообщений). В общем, это тема довольно сложная и в двух словах не объяснить, но, надеюсь общую суть я передал.
спасибо
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Что такое single-threaded apartment простыми словами?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]