Текущий архив: 2006.12.03;
Скачать: CL | DM;
Вниз
thread.terminate Найти похожие ветки
← →
breeze (2006-11-16 20:42) [0]
procedure TForm1.Button10Click(Sender: TObject);
begin
if Thread1 = nil then
begin
button10.Caption := "Стоп";
Thread1 := TScanThread.Create(False, edit4.Text, checkbox11.Checked);
end
else
begin
button10.Caption := "Старт";
//Thread1.Terminate;
TerminateThread(thread1.ThreadID,0);
Thread1 := nil;
end;
end;
поток инициализирован как nil
По нажатию на кнопку запускается поток
по повторному нажатию на кнопку по идее он дролжен завершиться, но этого не происходит.
Я походу туплю, но подскажите что неправильно делаю
← →
breeze (2006-11-16 20:59) [1]
h := OpenThread($1,false,Thread1.ThreadID);
TerminateThread(h,0);
CloseHandle(h);
изменил вот так, теперь поток останавливается, но не освобождает ресурсы которые использовал. Можно ли его уничтожить подчистую, чтоб от него вообще следа не осталось?
← →
Джо © (2006-11-16 21:01) [2]Не стоит использовать TerminateThread без очень БОЛЬШОЙ на то нужды. Об этом даже в MSDN написано недвусмысленно.
← →
Джо © (2006-11-16 21:02) [3]Используй Thread1.Terminate. Этот метод выставляет свойство Terminated в True. Его тебе и нужно анализировать в теле своего метода Execute и делать выход из него, кода Terminated = True. Вот и всё.
А, да. Поставь еще Thread1.FreeOnTerminate := True.
← →
Eraser © (2006-11-16 21:03) [4]> [0] breeze (16.11.06 20:42)
> TerminateThread(thread1.ThreadID,0);
так потоки завершать очень не рекомендуется. поток должен завершиться сам, т.е.Thread1.Terminate;
если нужно, чтобы операция выполнилась синхронно, можно добавитьThread1.WaitFor;
← →
Суслик © (2006-11-16 21:57) [5]
> Eraser © (16.11.06 21:03) [4]
> если нужно, чтобы операция выполнилась синхронно, можно
> добавить
> Thread1.WaitFor;
тут еще тонкий момент - а если у его потока стоит FreeOnTerminate?
AccessViolation может быть?
2Автор - у тебя каково значение свойства FreeOnTerminate у потока?
Страницы: 1 вся ветка
Текущий архив: 2006.12.03;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.051 c