По теме нескольких компонентов STA
Можно иметь два экземпляра одного и того же COM-компонента STA и обращаться к ним из C #. Единственное, что может помешать вам в таком сценарии, - это сам объект, если он реализован как одноэлементный объект.
Однако, если оба экземпляра находятся в одном потоке STA, активный вызов в одном из экземпляров заблокирует любые другие вызовы в этом потоке. Таким образом, если вы хотите, чтобы эти два экземпляра работали параллельно, вам нужно, чтобы они были в отдельных потоках STA. Чтобы быть в безопасности, я бы создал оба экземпляра в фоновых потоках. Это должно предотвратить блокировку вашего пользовательского интерфейса.
По теме STA против MTA для внешнего компонента
Я не уверен, почему находящийся в C компонент помешал бы ему быть MTA-объектом. Быть MTA означает, что объект должен внутренне синхронизировать свой доступ к состоянию и код управления между несколькими потоками.
ПРЕДУПРЕЖДЕНИЕ: Гадкий хак! :-) Если вы хотите немного поэкспериментировать, вы можете зайти в реестр и изменить модель потоков внешних компонентов с Apartment на Free, просто чтобы убедиться, что ваш код будет правильно работать с MTA. Однако их компонент, вероятно, сломается, поскольку они, вероятно, не написали поточно-ориентированный код, полагаясь на COM для их защиты.
Сделайте заметку на видном месте, чтобы позже отменить это изменение, чтобы у вас не было системы, в которой их код не работал и потратил бесчисленные часы, гоняясь за призраками. : -)