Использование не STA-потоков в проектах VSTO для достижения параллелизма? - PullRequest
0 голосов
/ 21 сентября 2018

Понятно, что при использовании VSTO-приложения основное приложение Office работает с потоком STA, а порождение других потоков STA не представляет проблем (на самом деле они создают некоторые проблемы, но мы можем справиться с ними).Причина в том, что потоки STA гарантируют, что один поток обращается к COM-объекту в любой момент времени, если я правильно понял.И STA - это все равно, что сказать, что в любой момент времени может работать только один поток.

Но теоретически мы можем создать поток, который не является ни STA (и, возможно, ни MTA), чтобы достичь истинного параллелизма, если предположить, что мы делаемнет операции, связанной с COM?Или STA применяется только к COM-объектам в том смысле, что параллелизм возможен, но STA просто не допускает этого в отношении COM?

1 Ответ

0 голосов
/ 22 сентября 2018

Вы можете свободно использовать потоки, не относящиеся к STA (для своих собственных целей), если вы не обращаетесь к объектам Office из этих потоков, и если вы не обращаетесь к пользовательскому интерфейсу из этих потоковпотоки.Вам просто нужно гарантировать, что эти потоки будут прерваны, когда надстройка выгружена.В этом случае офисное приложение даже не узнает, что ваши потоки существуют.

...