Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Проблема с потоками TThread


Автор: Martison 15.1.2010, 15:28
Добрый день! Начал работать с потоками - возникла проблема.
Создаю поток TThread, в Unit1 создаю TStringList *str=new TStringList. При передаче данных в str, потоки их не видят - то есть для них они пустые.
Как быть ? На гугл просьба ссылки не давать уже все перерыл. Заранее огромное спасибо.

Автор: Alca 15.1.2010, 15:34
Код покажи.

Автор: Martison 15.1.2010, 15:45
Всем кодом нагружать не буду, вот пример:

Unit1.h:
Код

TStringList *str=new TStringList;


Unit1.cpp:
Код

void __fastcall TForm1::FormCreate(TObject *Sender)
{
str->LoadFromFile("PoolDeletingDomainsList.txt");
}


Unit2.cpp:
Код

void __fastcall TThread::Execute()
{
// Вот тут ошибка, str попросту пустой, хотя если то же самое делать не из потока, то все проходит успешно.
Form1->Memo1->Text=str->Text;
}

Автор: Alca 15.1.2010, 15:50
Цитата

Form1->Memo1->Text=str->Text;

Знаешь, что такое Synchronize ?
Покажи как запускаешь поток.

Автор: Martison 15.1.2010, 15:51
go = new TThread(false);

Добавлено через 23 секунды
Про синхронизацию читал, но конкретных пример не нашел. Может подскажешь ?

Автор: Alca 15.1.2010, 15:53
Цитата

Может подскажешь ?

Все обращения к компонентам VCL надо делать через Synchronize.

Автор: Martison 15.1.2010, 15:56
Можно пример кода ? Пожаалуйста smile

Автор: Alca 15.1.2010, 15:58
Создай в билдере новый класс потока TThread и там все увидишь.

Добавлено через 31 секунду
еще помогает F1

Добавлено через 2 минуты и 9 секунд
http://forum.vingrad.ru/forum/topic-60076/view-all.html

Автор: Martison 15.1.2010, 16:06
Спасибо, о дражайший! Все заработало как надо! 

Автор: Alca 15.1.2010, 16:12
Пж.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)