Есть ПО для которого пишется расширение(COM). Дёргать API этого ПО можно только из его потока(если поток придержать, то ПО повисает и не отвечает), то есть потока который он выделил при загрузки расширения. Так же осуществляется связь этого расширения по средствам WCF со сторонней программой.
На текущий момент сделаны костыли в виде WinForms invoke():
В Parent Thread создаётся Form, а из WCF Thread дёргается его Invoke().
Как я понимаю Invoke отправляет сообщение в пул сообщений главного цикла WinForms, а тот в свою очередь дёргает соответствующую функцию. Только не понятно каким образом WinForms прописывается в главный цикл обработки сообщений ПО?