Будьте осторожны, хотя. Производительность может стать серьезной проблемой.
Если вы просто играете, чтобы узнать о BHO, вы можете использовать STA, чтобы заставить реализующий объект :: SetSite () работать так, как если бы он был однопоточным (это позволяет другим потокам вытягивать указатель вашего BHO GlobalInterfaceTable, как упоминает @JasonS.
Если вы делаете что-то, что, как ожидается, станет частью продукта, я настоятельно рекомендую вам очень тщательно пересмотреть возможность использования MTA везде, где только можно, и самостоятельно решать проблемы параллелизма и безопасности потоков. В этом случае вам нужно будет только убедиться, что потоки, взаимодействующие с вашим BHO COM-объектом, сами были инициализированы для COM.
Например, если вы хотите отслеживать входящие / исходящие данные веб-сайта в поисках вещей (как опасных, так и чувствительных) - тогда вам НЕ нужно заставлять все эти потоки опускаться до горла объекта STA, потому что, используя Yahoo как Например, будет запущено более 30 запросов, и ваш BHO начнет блокировать IE.