Из вашего фрагмента не очень понятно, как вызывается крайне важный метод Init () и как запускается поток. Ясно, что поток, в котором создается COM-объект, не совпадает с потоком, в котором выполняется вызов SomeMethod (). Кроме того, предполагая, что COM-сервер является многопоточным, COM должен перенаправить вызов SomeMethod () в поток, создавший объект. Тот, который называется Init (). Если этот поток больше не работает, возникает веселье.
Есть одна вопиющая проблема, вы забыли вызвать Thread.SetApartmentState ().
Учитывая, что COM уже выполняет маршальные вызовы между потоками, вы, вероятно, ничего не получите, запустив свой собственный поток. Вы не можете волшебным образом сделать COM-сервер многопоточным, если он отказывается его поддерживать.