Проблемы с TThread
в private поле типа TThread
по нажатии на кнопку формы
создаётся процесс, заносятся исходные данные,
процесс запускается, идут фоновые вычисления,
на канву выводится график расчёта (она блокируется с помощью Lock).
На форме лежит другая кнопка,
по нажатию на которую выполняется имя_потока.Terminate
После чего вылазит Access violation .......
В дебагере, в этом обработчике, на имени процесса вылазит хинт nil.
Т.е. процесс как бы не создан(!?), хотя в это время благополучно всё считает.
Всё происходит в рамках одного объекта-формы.
Народ, как остановить этот долбаный процесс?
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)
//класс который вычисляет фрактал