Если вы делаете вызов из основного потока, вы должны добавить атрибут STAThread в метод Main, как указано в предыдущем ответе.
Если вы используете отдельный поток, он должен находиться в STA (однопоточная квартира), что не относится к фоновым рабочим потокам. Вы должны сами создать тему, например:
Thread t = new Thread(ThreadProc);
t.SetApartmentState(ApartmentState.STA);
t.Start();
с ThreadProc, являющимся делегатом типа ThreadStart.