Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.032 c
15-1163174057
Колдун1111111
2006-11-10 18:54
2006.12.03
АЦП последовательного приближения


2-1163396548
диффур
2006-11-13 08:42
2006.12.03
как организовать цикл по записям в таблице ib


15-1163496527
data
2006-11-14 12:28
2006.12.03
Порекомендуйте надежных и хороших мастеров (взялась за ремонт)


8-1145877105
us
2006-04-24 15:11
2006.12.03
анализатор звука


1-1161328605
312kbps
2006-10-20 11:16
2006.12.03
Получить ссылку на объект 1С !!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский