СОздаю форму в функции, привязвной к DoWork этого объекта:
void oServerContainer_DoWork(object sender, DoWorkEventArgs e)
{
FormServer1 oFrm = new FormServer1();
oFrm.Show();
Application.Run();
}
Получаю исключение в это методе:
Current thread must be set to single thread apartment (STA) mode before OLE calls can be made. Ensure that your Main function has STAThreadAttribute marked on it
Что он от меня хочет? И как быть?
Здравствуйте, alcotras, Вы писали:
A>Что он от меня хочет? И как быть?
Повесь на метод Main атрибут STAThread.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, <Аноним>, Вы писали:
A>>>Что он от меня хочет? И как быть?
L>>Повесь на метод Main атрибут STAThread.
А>Это не Main метод. Это метод, вызываемый из BackgroundWorker
Повесь на метод Main атрибут STAThread.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, alcotras, Вы писали:
A>Что он от меня хочет?
Потоку, в котором вызывается Application.Run(); надо сказать
SetApartmentState(ApartmentState.STA).
A>И как быть?
Поток, в котором вызывается "oServerContainer_DoWork" создан не тобою, поэтому менять appartment state для него ты не вправе. Поэто в обработчике создавай новый поток (
Thread), говори ему
SetApartmentState(ApartmentState.STA) и запускай в нём свою форму и Application.Run();. Кстати, лучше сделать это так:
using(FormServer1 oFrm = new FormServer1()) {
A> Application.Run(oFrm);
}//using
A>