Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Потоки


Iriss ©   (2009-04-20 11:52:00) 

Запускаю расчет кнопкой "Расчет", хочу, чтобы по нажатию кнопки "Прервать" расчет был убит, но не могу пока идет обработка метода нажатия кнопки "расчет" нажать кнопку "Прервать"

Кнопка зажатой остается

------------------------------------
Что я делаю:

Запускаю поток, в котором запускаю метод Run(Self);
который по иерархии вызывает нужный метод Calculate(), в котором производится расчет, который может зависать


Сергей М.   (2009-04-22 19:03:00) [1]

Аминь


Iriss   (2009-04-22 18:30:00) [2]

всем спасибо, решил


Anatoly Podgoretsky   (2009-04-20 12:53:00) [3]

> Ega23  (20.04.2009 12:49:12)  [12]

Никто так много не сделал для потокостроительства.


Ega23   (2009-04-20 12:49:00) [4]


> еще одна жертва Архангельского? -)


Очень похоже...


clickmaker   (2009-04-20 12:18:00) [5]

хм... еще одна жертва Архангельского? -)


Сергей М.   (2009-04-20 12:14:00) [6]


> поток, в которомидет расчет


Значит не в нем, а в основном у тебя идет расчет !
См [5].


clickmaker   (2009-04-20 12:12:00) [7]

> так вот проблема и в том

проблема в том, что не можешь здесь внятно описать процесс расчета.
Если "просто не могу нажать что-либо на форме", значит этот поток как-либо блокирует очередь сообщений главной формы.


Iriss   (2009-04-20 12:08:00) [8]

так вот проблема и в том, что как только я нажимаю "Расчет", создается поток, в котором идет расчет,
но во время выполнения этого расчета я просто не могу нажать что-либо на форме (видно, что кнопка "Расчет" находится в нажатом состоянии) - в этом вся и проблема


clickmaker   (2009-04-20 12:02:00) [9]

> расчет представляет собой композицию подрасчетов, каждый
> из которых может зависать

а почему он может зависать?
для справки: в потоке можно периодически проверять значение переменной Terminated, и если установлено, выходить из потока.
По нажатию же кнопки можно вызывать метод потока Terminate


Palladin   (2009-04-20 12:01:00) [10]

телепатор подсказывает, что все расчеты производятся в Synchronize


Сергей М.   (2009-04-20 12:01:00) [11]


> Кнопка зажатой остается


Кто ее "зажал", кто посмел ?
Она ж не барышня, чтобы ее "зажимать"))


> Запускаю поток, в котором запускаю метод Run(Self);


Значит не в нем, раз у тебя кого-то там "зажало")


Iriss   (2009-04-20 11:59:00) [12]

расчет представляет собой композицию подрасчетов, каждый из которых может зависать


Iriss   (2009-04-20 11:58:00) [13]

упс, да, иерархии там нет. Ошибся)

Запускаю поток, в котором запускаю метод Run(Self);
который вызывает метод Calculate(), в котором производится расчет, который может зависать


clickmaker   (2009-04-20 11:58:00) [14]

> пока идет обработка метода нажатия кнопки "расчет" нажать
> кнопку "Прервать"

как выглядит расчет?


Palladin   (2009-04-20 11:54:00) [15]


> который по иерархии вызывает нужный метод Calculate(),

по какой еще иерархии?


Наверх

Титульная страница Поиск, карта сайта Написать письмо