Вы пытались добавить атрибут [STAThread]
к Main()
?
[STAThread]
static void Main()
{
}
Когда применяется STAThreadAttribute , он изменяет состояние квартиры текущего потока на однопоточное.
Не вдаваясь в подробное обсуждение COM и потоков, этоАтрибут обеспечивает механизм связи между текущим потоком и другими потоками, которые могут захотеть общаться с ним через COM.
Этот атрибут обычно автоматически применяется к Main при запуске нового проекта пользовательского интерфейса.
Или (как сказал мне SLaks) вы можете попробовать:
Thread t = new Thread(ThreadProc);
t.SetApartmentState(ApartmentState.STA);
....
public void ThreadProc()
{
// Thread function
}
Вы также можете использовать
bool result = t.TrySetApartmentState(ApartmentState.STA);
и проверить значение result
, чтобы убедиться, что ваша попытка была успешной