Текущий архив: 2003.03.17;
Скачать: CL | DM;
Вниз
По потокам (Thread) Найти похожие ветки
← →
Programist (2003-03-04 16:06) [0]Создаю поток:
M: TMyThread;
...
begin
M:=TMyThread.Create(False);
M.FreeOnTerminate:=True; //чтобы он завершился как Execute завериштся...
end;
1. Но вот как ему потом M.Free сделать???
2. И как его можно заврешить раньше, если цикла внутри нет, который бы проверил M.Treminated?
← →
Strumpf (2003-03-04 16:27) [1]>Но вот как ему потом M.Free сделать???
Он сам убьется после завершения Execute.
← →
MBo (2003-03-04 16:34) [2]вот только в конструктор нужно передать True, а после установки FreeOnTerminate сделать Resume
← →
Programist (2003-03-05 09:55) [3]toStrumpf - точно убъётся???
toMBo - понял.
А как в поток передать изначально параметры?!
← →
REA (2003-03-05 10:03) [4]До запуска (наверно) можно обычные переменные класса установить.
>2. И как его можно заврешить раньше, если цикла внутри нет, который бы проверил M.Treminated?
А вот это уже не так просто - стандартный Free насколько я помню выставляет Terminated и ждет завершения потока. Можно попробовать Suspend+Free, но тоже осторожно.
Дальше мои домыслы и безосновательные утверждения:
Там появляется какая-то разница между просто выходом и выходом при выходе из приложения или DLL. В разных версиях Delphi механизм выхода из потока разный.
← →
NailS (2003-03-05 12:16) [5]
> И как его можно заврешить раньше, если цикла внутри нет,
> который бы проверил M.Treminated?
А что там есть?
> Можно попробовать Suspend+Free, но тоже осторожно.
Не поможет. В деструкторе будет ожидаться завершение потока (D6).
BOOL TerminateThread(
HANDLE hThread, // handle to thread
DWORD dwExitCode // exit code
);
Страницы: 1 вся ветка
Текущий архив: 2003.03.17;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.007 c