![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
alexeis1, Snowy, спасибо. В теории постепенно начинаю догадываться... Уже прогресс!
![]() Но вот как привязать к синхронизации form1.Button2.Click;? -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Просто ее нужно вызывать только после того как остановлен главный поток. Пока главный поток спит, работает всего один единственный поток, потому он уже ни с кем не конфликтует и можно вызывать все что угодно. Главное потом разбудить спящего ![]() -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Sunvas |
|
||||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Как из-под треда остановить основной поток? Если вызывать эту функцию из потока, то вылазит ошибка. ![]()
Если вытскивать код процедуры в мою процедуру - она перестает работать. ![]() -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
||||
|
|||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Не правильно понял! Эту функцию вызывает основной поток для того, чтобы дополнительный поток мог его заблокировать. Нужно просто войти в указанную критическую секцию и дождаться пока на ней же заблокируется основной поток. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Можешь код нарисовать? А то уже танцую с бубенцом вокруг этой проблемы со вчерашнего дня. -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
Alexeis |
|
||||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Оказывается у класса TThread все нужные методы являются методами класса. Вот он метод, который позволит сделать очень просто синхронизацию.
Единственное, неудобство, что ему нужно передавать метод, а не процедуру, но и это на самом деле несложно обойти, но в данном случае не суть. Если первый параметр NIL то синхронизация будет производится с основным потоком. В качестве метода я использовал метод формы.
BeginTreadClick - создает поток и запускает его функцию treadfunct, которая тут же пытается синхронизироваться с основным потоком. Во время паузы между вызовом таймера ей это удается и пока она выполняется, перерисовка останавливается, нетрудно увидеть, что просто метод TempProc зациклен, потому пока он будет выполняться, основной поток будет залочен, все что в нем (в TempProc) будет безопасно работать с VCL. Это получается абсолютный аналог Sincronize; - свойства класса TThread. Хочу заметить что объект класса TThread не создается (да и не может быть создан, ведь он абстрактный). -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Большое спасибо!
alexeis1, давно бы так. А то танцевали с бубеном вокруг горшка... ЗЫ. Думаю тема весьма полезная - ее стоит почистить, закрыть и оставить следующим поколениям на обозрение. -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |