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