![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Остановка потока [D7, WinXP]
Destroyer © (2006-08-26 21:28:00)Задача выполняется в потоке. По нажатию кнопки на форме надо остановить выполнение потока. Проверять флаг постоянно на отключение - не подходит. Нужно что-то типа TimerThread.Destroy.
Делаю так:
protected
procedure Execute; override;
public
constructor Create(FPath: String; Fflag: boolean; RProcType:string; FExt:string);
constructor Destroy;
end;
...
constructor TimerThread.Destroy;
begin
exit;
end;
Но так, выдается ошибка неверный дескриптор.
Как правильно мгновенно остановить поток?
Destroyer (2006-08-26 23:06:00) [61]BOOL TerminateThread(
HANDLE hThread, // handle to the thread
DWORD dwExitCode // exit code for the thread
);
Где взять хэндл потока?
Поток создается так:
TimerThread.Create(dir1,false,'Param1',Ext);
Ketmar (2006-08-26 22:20:00) [62]> [3] Fay © (26.08.06 22:18)
вах! а я и не заметил. %-)
Fay (2006-08-26 22:18:00) [63]> constructor Create(FPath: String; Fflag: boolean; RProcType:string; FExt:string);
> constructor Destroy;
Это просто бред
DVM (2006-08-26 21:34:00) [64]
> Проверять флаг постоянно на отключение - не подходит
именно это самый быстрый и корректный путь.
> Как правильно мгновенно остановить поток?
Мгновенно, но не всегда правильно TerminateThread()
Ketmar (2006-08-26 21:29:00) [65]правильно -- проверять флаг.