Мне нужно организовать работу с MsRdpClient -нтом в нескольких потоках.Но тут такая трабла: ************** unsigned __stdcall Thread1(void*a) { Form1->MsRdpClient21->Connect(); WaitForSingleObject(event,INFINITE); } ************** _beginthreadex(NULL,NULL,Thread1,NULL,NULL,NULL); ************** Из потока у меня метод Connect не работает,да и остальные тоже.Возможно ли в потоке вызвать этот метод,или нет?В чем может ыбть проблема?
Могу конечно ошибаться, но мне кажется что проблема у вас в том что вы с потоков обращаетесь к одному компоненту который на форме. То есть по логике вы в потоке должны создавать компонент и работать с ним.
Тогда попробуй сделать наоборот - создать компонент в потоке и вызывать его методы оттуда же. Интересно, так будет работать ли.
В таком случае нужно указать обработчик для метода OnConnecting,а у него такой прототип void (_fastcall * (_closure )(TObject *))(TObject *),это мне борланд выдал.Токо вот как он бдет выглядеть по нормальному?Что за _closure ?
Не знаю, я на цпп не прогаю, но можно ведь просто вставить прототип в описание класса, добавить название метода и нажать Ctrl+Shift+C чтобы сгенерировался скелет реализации, ну а дальше просто перенести код из аналогичного обработчика с класса формы. Ах да - и не забыть присвоить обработчик к событию.
а смысл апать? Читай документацию, смотри что у тебя именно не так. Но мое мнение всетаки создавай компонент в потоке и к нему обращайся
unsigned __stdcall Thread(void*a) { TMsRdpClient2 *MsRdpClient2; MsRdpClient2->Destroying(); MsRdpClient2->Server="201.41.17.145"; MsRdpClient2->UserName="sgsg"; }
Проблема с самой VCL,она не предназначена для работы с потоками.Но дело в том что MsRdpClient ето ведь OCX компонент.