![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Потоки
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(),
по какой еще иерархии?