Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблемы с TThread

Аноним
Есть TForm
в private поле типа TThread
по нажатии на кнопку формы
создаётся процесс, заносятся исходные данные,
процесс запускается, идут фоновые вычисления,
на канву выводится график расчёта (она блокируется с помощью Lock).
На форме лежит другая кнопка,
по нажатию на которую выполняется имя_потока.Terminate
После чего вылазит Access violation .......
В дебагере, в этом обработчике, на имени процесса вылазит хинт nil.
Т.е. процесс как бы не создан(!?), хотя в это время благополучно всё считает.
Всё происходит в рамках одного объекта-формы.
Народ, как остановить этот долбаный процесс?
Аноним
<TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD>Quote:<HR></TD></TR><TR><TD><FONT SIZE=-1><BLOCKQUOTE>
On 2001-09-19 06:06, Anonymous wrote:
Есть TForm
в private поле типа TThread
по нажатии на кнопку формы
создаётся процесс, заносятся исходные данные,
процесс запускается, идут фоновые вычисления,
на канву выводится график расчёта (она блокируется с помощью Lock).
На форме лежит другая кнопка,
по нажатию на которую выполняется имя_потока.Terminate
После чего вылазит Access violation .......
В дебагере, в этом обработчике, на имени процесса вылазит хинт nil.
Т.е. процесс как бы не создан(!?), хотя в это время благополучно всё считает.
Всё происходит в рамках одного объекта-формы.
Народ, как остановить этот долбаный процесс?
</BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE>

Ты бы хоть код прислал, а вообще такое может случиться только у НАСТОЯЩИХ чайников
Аноним
>Ты бы хоть код прислал,а вообще такое может >случиться только у НАСТОЯЩИХ чайников

По многочисленным просьбам

TMF = class(TForm)
private
{ Private declarations }
th : TFractalCalc;//Поток, который производит вычисления
CalcTime : TDateTime;//для подсчёта затраченого на вычисления времени
procedure ThreadDone(Sender: TObject);
//процедура выполняется по завершении вычисления, её прикручиваем к OnTerminated объекта th

//в этих процедурах происходит ошибка
procedure TMF.bbStopClick(Sender: TObject);
begin
th.Terminate;
end;

procedure TMF.bbSuspendClick(Sender: TObject);
begin
th.Suspend;
end;

TFractalCalc = class(TThread)
//класс который вычисляет фрактал
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог