Доброго времени суток тру кодеры! В общем сидел задавал вопросы гуглу по теме синхронизации ит.п. Наткнулся тут на такой вот пример: Code: class TThread1 : public TThread { ... private: void __fastcall ForSynchroUpdate();//объявление метода, в котором будем обращаться к компонентам формы "основного" потока ... }; void __fastcall TThread1::Execute() { while(!Terminated) { if(...)//случилось что0то такое, что требует изменения свойств компонентов { Synchronize(ForSynchroUpdate);//"синхронизованный" вызов метода ForSynchroUpdate } ... } } void __fastcall TThread1::ForSynchroUpdate() {//доступ к свойствам компонентов осуществляем только в методе TThread1, вызванном //с помощью Synchronize Form1->Memo1->Lines->Add("aaaaaaaaa"); Form1->Edit1->Text="bbbbbb"; Form1->Panel1->Visible=true; //для передачи той "инфы", о которой говорилось, можно объявить два String'a: члены TForm1 //и передавать эту инфу здесь. Form1->String1="cccccccccc"; Form1->String2="cccccccccc"; } в общем немогу понять что нужно в форме прописать чтобы передать String из потока. подскажите пожалуйста. оч интересно. вопрос касается только: Form1->String2="cccccccccc"; вот. заранее большое прибольшое спасибо!
В классе форме надо соответственно прописать паблик поля: String1, String2: string; ПС Тупить такая синхронизация у тебя будет неимоверно
ИМХО гуи с потоком надо синхронизовать при помощи WM_USER.А переменные с данными или глобальные или ссылку на них в поток передавать.
ну мне как бы только интересно про передачу строки из потока(в моем случае из одного а не из 100500) на форму. можно поподробнее про: что то немогу сделать )
Это был пример на дельфи. На С++ точно не знаю, и билдера нету, но возможно что-то вроде public string String1; public string String2; (это в объявлении класса формы) Да и вообще непонятное выражение "передать в форму" Есть кстати более быcтрый способ передать строку - послать SendMessage, а в форме принимать обработчиком сообщения
я долго думал как написать )) ничего подходящего не придумал ))) да я видел такой пример(на форуме где ссыль в первои посте). тольк нелюблю лишний код даже если его мало) в общем спасибо GhostOnline, благодаря вам справился: public: String str;
зачем вообще осваивать синхронизацию на таком высоком уровне классы формы брр.. понять в 100 раз сложнее из за всей этой абстракции