![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача параметров thread-у [D6]
ned © (2002-12-03 12:03:00)Нужно передать пару параметров (integer) конструктору потока ...
пробовал сделать так :
MyThread = class(TThread)
FHandle1,FHandle2 : integer;
constructor Create( Handle1,Handle2 : integer)
protected
procedure Execute; override;
end;
constructor Create( Handle1,Handle2 : integer)
begin
inherited Create(True);
FHandle1 := Handle1;
FHandle2 := Handle2;
FreeOnTerminate := True;
Resume;
end;
procedure Execute;
begin
// использую эти хэндлы
end;
///////////////////////////
Вроде работает но как то криво ... Как это грамотно сделать ?
У меня страшно глючит метод Execute при отладке.
Виктор Щербаков (2002-12-03 13:08:00) [1]ned (03.12.02 12:31)
Цикл со 100 до 0 работает быстрее, чем от 0 до 100.
Skier (2002-12-03 12:33:00) [2]>ned
Если хочешь разобраться в вопросах оптимизации кода и вообще
в вопросах написания компиляторов, то купи "книгу дракона".
Она тебе поможет, хотя это уже совсем другой вопрос...
ned (2002-12-03 12:31:00) [3]Убрал ... точно она ... Вопрос : где же тут оптимизация ? Где тут логика ?
Skier (2002-12-03 12:22:00) [4]>ned
> Думаете 0 ? Нет у меня =100 ... :) Чего только не делал
> перекомпилировал и под D6 и D7 ... Это вообще что такое
> ?
Оптимизация, батенька...
ned (2002-12-03 12:20:00) [5]Еще например в теле Execute :
var
i : integer;
begin
for i := 0 to 100 do begin
// чего то выполняется
end;
end;
как вы думаете чему равна переменная i при первой итерации ?
Думаете 0 ? Нет у меня =100 ... :) Чего только не делал перекомпилировал и под D6 и D7 ... Это вообще что такое ?
Кстати когда ставишь точку останова в Execute то делфи затыкается не всегда ... примерно в 50 % случаев ...
ned (2002-12-03 12:13:00) [6]И еще делфи зависает при установки точки останова в процедуре Execute ... Есть какие нить тонкости ?
@A (2002-12-03 12:12:00) [7]Если передаешь хендлы VCL сомпонентов, то надо использовать
метод Synchronize(проседура);
Игорь Шевченко (2002-12-03 12:12:00) [8]constructor Create( Handle1,Handle2 : integer)
begin
FHandle1 := Handle1;
FHandle2 := Handle2;
inherited Create(True);
FreeOnTerminate := True;
Resume;
end;
Не проще ?