![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Query.Last ;в отдельном потоке? [D6]
Max_ © (2003-06-18 10:59:00)Создаю поток, передаю в него Query1 (нпр. t:=TMyThread.Create(Query1);), в Execute методе потокa выполняется Query.Last! Нажимаю кнопку и поток запускается- всё хорошо работает, но вот проблема в том, что я не могу другой кнопкой его прервать (t.terminate), т.к. метод Last выполняется 1 раз и оператор в методе Execute потокa (while not Terminated do) неуместен (да он и не работает в этом случае)!!! Как мне его прервать раньше чем он закончится?
Max_ (2003-06-18 11:20:00) [1]Так получается Вы заменяете Last на While not Query1.Eof do Query1.Next; A это приемлимо, т.е. скорость Last и While одинаковая?
Соловьев (2003-06-18 11:04:00) [2]
...
if thread_terminate then t.terminate elseNext;
...
Соловьев (2003-06-18 11:03:00) [3]с потоками не работал, но может так?
with Query do
begin
open;
first;
while not Eof
begin
if thread_terminate then t.terminate;
Next;
end;
end;