Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.06;
Скачать: CL | DM;

Вниз

Вопросы по Thread   Найти похожие ветки 

 
starter   (2004-09-27 22:22) [0]

Вешаю на кнопку длительный расчет. Должна быть возможность остановки расчета, соответственно для доступности кнопки останова - расчет в отдельный thread. Кидаю на форму MCK компонент TKOLThread, сам расчет - в OnExecute, в OnClick стартовой кнопки - Thread1.Execute. Запускаю - пока идет расчет ни форма, ни одна кнопка на ней не реагируют. Applet.ProcessMessages не помог. С каждым новым расчетом память по 16К утекает, если AutoFree:= true; то кнопка запуска расчета становится одноразовой.

Если же делать без MCK компонента

procedure TForm1.BitBtn1Click(Sender: PObj);
var thr: PThread;
begin
thr:= NewThread;
thr.OnExecute:= Raschet;
thr.Resume;
end;

то кнопочки на форме доступны, но память все равно по 16К утекает.

Ну и вопросы собсно такие: почему МСК-овский Thread так себя ведет и как правильно освобождать память после использования Thread, куда вставлять thr.Free.


 
SPeller ©   (2004-09-28 09:47) [1]

В случае с MCK тоже вызывай Resume вместо Execute. На счет утечки памяти - это у тебя твой метод утечки даёт. Попробуй сделать пустой метод OnExecute и посмотри, будет ли утекать в этом случае.


 
starter   (2004-09-28 12:11) [2]

На счет утечки памяти очень извиняюсь, оно в самом деле у меня происходит.

Замена Execute на Resume дала положительный результат, но кнопка запуска стала одноразовой, второй раз запустить расчет невозможно, AutoFree выставлен в false.


 
SPeller ©   (2004-09-28 14:34) [3]

После отработки твоей процедуры надо вернуться в её начало и вызвать Suspend, потому что поток автоматически (виндовой объект) уничтожается после выхода из процедуры. AutoFree же указывает уничтожать ли объект типа TThread после завершения потока.


 
Paha   (2005-03-09 02:35) [4]

Дайте, пожалуйста, пример реализиции Thread.
Задача такая: в Label1 и Label2 с интервалом 50мс генерится число Random(100).
Так вот хочется, чтобы генерация и показ этих чисел в лебелах был разделен в потоках Thread1 и Thread2 соответствено. Напишите плз рабочую реализацию.


 
SPeller ©   (2005-03-09 11:30) [5]

Paha   (09.03.05 2:35) [4]
20 баксов.


 
Paha   (2005-03-09 12:19) [6]

>> Speller
Большое спасибо за помощь. За 20 баков мне в одном месте про потоки разжуют и в рот положат.



Страницы: 1 вся ветка

Текущий архив: 2005.11.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.051 c
4-1125559948
Vcoder
2005-09-01 11:32
2005.11.06
Как получить Caption окна?


1-1129528210
Карелин Артем
2005-10-17 09:50
2005.11.06
Как сохранить/считать свойства потомка TObject в строку?


14-1128680845
SPeller
2005-10-07 14:27
2005.11.06
Бас-подгон от государства


14-1129109787
y-soft
2005-10-12 13:36
2005.11.06
Вопрос к администрации


14-1129612619
Ega23
2005-10-18 09:16
2005.11.06
С днем рождения! 18 октября