STA относится к объектам и функциям? - PullRequest
0 голосов
/ 25 февраля 2011

Мое понимание STA состоит в том, что, если мой поток работает в квартире STA, мне не нужно беспокоиться о безопасности потока, и вызовы функций моего потока автоматически ставятся в очередь.

Мой вопрос заключается в том, чтоесли я запускаю рабочий поток в STA и затем получаю объект из этого потока через функцию, должен ли я беспокоиться о безопасности потока при использовании этого объекта?Или вызовы функций для этого объекта поточно-безопасны?

Ответы [ 2 ]

2 голосов
/ 25 февраля 2011

Создание нити в STA-волшебстве не делает ничего безопасным.Маркировка потока как потока STA означает, что COM-объекты, которые требуются для запуска в потоке STA, могут быть запущены в этом потоке.Это означает, что уровень COM знает, как правильно распределять вызовы.

Краткое введение см. В

http://blogs.msdn.com/b/ericlippert/archive/2003/09/18/53041.aspx

2 голосов
/ 25 февраля 2011

STA в основном связано с COM и с тем, как обрабатываются объекты COM. Это не автоматически делает вещи безопасными в нормальном .NET-коде. Ничто не собирается автоматически сделать ваш .NET-код потокобезопасным.

Предполагая, что вы имеете дело только с управляемым кодом, я предлагаю вам забыть о квартирах, так как они вряд ли будут иметь отношение к тому, как вы пишете потокобезопасный код (или, действительно, хотите ли вы * * сделать большую часть вашего кода поточно-безопасной). (Обязательная ссылка: Эрика Липперта "Что это за вещь, которую вы называете поточно-безопасной?" сообщение в блоге.)

...