Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.027 c
6-1152735417
papaP
2006-07-13 00:16
2006.12.03
Проблема с ошибкой 302 Found


2-1163664385
неумейка
2006-11-16 11:06
2006.12.03
Фон StringGrig с перетеканием цвета


2-1163409157
иван8511
2006-11-13 12:12
2006.12.03
Как из одного события вызвать другое?


15-1163501972
Crazybeaver
2006-11-14 13:59
2006.12.03
Скиньте плиз NMFTP


1-1161588490
DmiSb
2006-10-23 11:28
2006.12.03
Запутался с показом немодальной формы из DLL




   Наверх