Текущий архив: 2006.04.02;
Скачать: CL | DM;
ВнизНе стартует тред в вынь98. В XP всё нормально. Найти похожие ветки
← →
Cybernik © (2006-02-28 18:18) [0]Описываю тред:
type
TScanThread = class(TThread)
protected
procedure Execute; override;
end;
Создаю тред на OnShow формы:
ScanThread := TScanThread.Create(False);
ScanThread.OnTerminate:=ThreadTerminate;
Не работает на выньдовс 98 почему-то такая конструкция. На ХП всё запускается замечательно. Не обяснит мне кто-нибудь почему так?
← →
begin...end © (2006-02-28 18:33) [1]> Cybernik © (28.02.06 18:18)
> Не работает на выньдовс 98 почему-то такая конструкция.
Из чего сделан такой вывод? Методу Execute управление передаётся?
А конструкция -- не очень хорошая. К моменту назначения свойства OnTerminate поток может уже завершиться, и вызова метода ThreadTerminate не произойдёт.
← →
Cybernik © (2006-02-28 18:39) [2]Ну если же в WinXP поток работает - то видимо управление передаётся же!
А как предлагаешь сделать лучше конструкцию? так:
ScanThread := TScanThread.Create(True);
ScanThread.OnTerminate:=ThreadTerminate;
ScanThread.Resume;
?
← →
begin...end © (2006-02-28 18:47) [3]> Cybernik © (28.02.06 18:39) [2]
> Ну если же в WinXP поток работает - то видимо управление
> передаётся же!
Я не про XP спрашиваю, а про 98, вообще-то. А если в Win98 управление на Execute передаётся, то тред как раз стартует -- о какой проблеме в таком случае речь?
> ScanThread := TScanThread.Create(True);
> ScanThread.OnTerminate:=ThreadTerminate;
> ScanThread.Resume;
Да, можно так.
← →
Cybernik © (2006-02-28 18:57) [4]Знал бы я как проверить передаётся оно или нет! Видимо что нет, раз сканирование не запускается. Кусок кода сам по себе рабочий т.к. проверял его в 98 не в треде. Значит вся проблема в запуске треда я так понимаю а именно в передаче управлению Execute
← →
begin...end © (2006-02-28 19:02) [5]> Cybernik © (28.02.06 18:57) [4]
> Знал бы я как проверить передаётся оно или нет!
Отладчиком.
Страницы: 1 вся ветка
Текущий архив: 2006.04.02;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.043 c