Threads

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Threads

Absurd » 09 авг 2005, 16:38

[quote="Booster"]Absurd,
>Потоки нужно использовать для внутренних частей программы, а не для GUI.
А это почему вдруг? Что-то я такой рекомендации майкрософт не видел]
Потому что GUI однопоточный везде и как правило требует внешнюю синхронизацию.

Booster » 09 авг 2005, 12:16

Absurd,
>Потоки нужно использовать для внутренних частей программы, а не для GUI.
А это почему вдруг? Что-то я такой рекомендации майкрософт не видел;-).

alex2233,
Попробуй так в Unit2.CPP:
>TForm1->Label1->Caption = Time();
TForm1 у тебя скорее всего уже объявлена глобально.
А Label1 всего лишь одно из данных этого объекта, типа объект в объекте.
Label1 в Unit1.CPP ты можеш вызывать потому, что вызываешь его в методах TForm1 и там неявно вызывается указатель "this",
то есть this->Label1->Caption = Time();
Да и не забудь закрыть поток когда закрываешь форму, а то получишь Access Violation.

P.S. Вобще конечно тема названа не совсем корректно.

Absurd » 09 авг 2005, 10:01

А чем тебя компонент 'Timer' не устраивает?
Потоки нужно использовать для внутренних частей программы, а не для GUI.

Threads

alex2233 » 09 авг 2005, 06:58

Здравствуйте !

Сейчас изучаю Потоки в билдере 5. Подскажите, как справиться с трудностью.

Описание разрабатываемой программы: на форме Windows графически отображается (в Label1) текущее время и рядом кнопка Button1 на закрытие программы.

Предполагаю поместить закрытие программы и отображение времени в отдельные потоки.

Для этого в Unit1.CPP пишу:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Close();
}


Потом создаю новый Unit2.CPP и header file.

В Unit2.CPP прописываю код отображения времени:

void __fastcall Potok1::Execute()
{

int i = 0;

while (i<15)
{
Label1->Caption = Time();
_sleep (1);
Label1->Refresh();

i++;
}
//---- Place thread code here ----
}

В результате получаю сообщение:
[C++ Error] Unit2.cpp(36): E2451 Undefined symbol 'Label1'

Пожалуйста, растолкуйте, в чем моя ошибка и как ее поправить.

С уважением,
Alex

:o ops:

Вернуться к началу