![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
потоки
авыф © (2007-12-05 15:19:00)Всем доброго дня.
Нужно сделать базовый класс, содержащий форму и поток. Т.е. форма будет одна и та же, а метод потока будет переопределятся. Так вообще можно? Допустим Execute потока вызывает какой-нибудь виртуальный метод формы, который потом и переопределяется. Подскажите, кто знает, а то я никогда с потоками дела не имел.
Kolan (2007-12-05 15:48:00) [21]> Нужно сделать базовый класс
> Надо сделать форму
> еще и кнопку туда хочу:)
Не хочу я кнопку, хочу быть владычецей морскою.
Palladin (2007-12-05 15:46:00) [22]
> авыф (05.12.07 15:38) [5]
объясни, что ты хочешь делать в этом потоке? насколько я понял, виртуальный метод формы тебе нужен лишь для разных стилей отображения какой либо одной и той же работы?
авыф (2007-12-05 15:39:00) [23]
> Сергей М. © (05.12.07 15:30) [3]
еще и кнопку туда хочу:)
авыф (2007-12-05 15:38:00) [24]
> а с этим еще хуже, так как, сам понимаешь, TThread.Synchronize
> в методе формы доступен не будет
Ну, а как-нибудь обойти-то можно? Если передать количество обрабатываемых записей. А по таймеру из Execute вызывать там SetDisplayText? Така можно?
Palladin (2007-12-05 15:33:00) [25]
> все это дело выполняется в потоке и на форме отображаются:
> текущее время, положение прогрессбара, в мемо выводится
> какая-то инфа - это уже надо инк. в предок.
>
а с этим еще хуже, так как, сам понимаешь, TThread.Synchronize в методе формы доступен не будет
Сергей М. (2007-12-05 15:30:00) [26]
> Нужно сделать базовый класс, содержащийформу и поток
Это как ?
Palladin (2007-12-05 15:29:00) [27]Type
TMyThreadClass=Class(TThread)
Private
m_theForm:TMyForm;
Protected
Procedure Execute; Override;
Public
Constructor Create(Suspended:Boolean;p_theForm:TMyForm);
End;
Constructor Create;
Begin
m_theForm:=p_theForm;
Inherited Create(Suspended);
End;
Procedure Execute;
Begin
m_theForm.MyThreadProc;
End;
вот только будет попа с попытками контролировать исполнение потока, придется заводить в форме потоко-безопасную переменную для сигнализирования тому же методу MyThreadProc дабы он завершила свою работу в случае, например, закрытия формы...
авыф (2007-12-05 15:24:00) [28]Или так:
Надо сделать форму, переопределив метод, скажем Processing, которой, все это дело выполняется в потоке и на форме отображаются: текущее время, положение прогрессбара, в мемо выводится какая-то инфа - это уже надо инк. в предок. Эт. вообще реально?