![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 13.05.2010
Сообщений: 670
|
![]()
имеется много потоков которые в определённом условии используют вызов showmodal из synchronyze, проблема в том что 2 и более потоков могут потребовать вызов showmodal и поставить весь вызов в цикл, решил воспользоваться WaitForSingleObject, но информации о том как её использовать в потоке для вызова showmodal, что бы пока один из потоков не закончит с ней работать остальные ждут так и не нашёл. Сам вызов кода выглядит так
Код:
Код:
|
![]() |
![]() |
![]() |
#2 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]() Цитата:
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
А чего вы хотите добиться, вызвав WaitForSingleObject? Узнать, а не висит ли уже главный поток внутри ShowModal()? Так это можно сделать с помощью обычного флага. Или вы хотите обождать, пока главный поток выйдет из ShowModal(), и только тогда запустить свой Synchronize()? Так Synchronize() и без вашей помощи обождёт, когда главный поток освободится.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 13.05.2010
Сообщений: 670
|
![]()
тоесть при Synchronize из двух потоко доступ к showmodal имеет только один?
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
еще проще, код внутри синхрониз может выполнять лишь один поток(и даже главный будет ждать)
(повторю, если не нарушены правила VCL, в данном случае они не нарушены) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 13.05.2010
Сообщений: 670
|
![]()
Даже если весь Execute обёрнут в TCriticalSection
|
![]() |
![]() |
![]() |
#7 |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
![]()
А MessageBox не спасет отца русской демократии ?
Она модальна и для ее вызова синхронизация с осн.потоком не требуется. |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
Вместо Synchronize отправляйте главному окну спец. сообщение.
По приёму сообщения главное окно покажет ShowModal-ом другое окно. Только мне сомнительна ценность показа модального окна не по команде пользователя. Пахнет говно-софтом.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 13.05.2010
Сообщений: 670
|
![]()
на подобе такого что ли?
из потока Код:
Код:
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
Наверное.
Только кто такой CT - не ясно. Где тут ShowModal - тоже.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Формы ShowModal | SoftKoc | Общие вопросы Delphi | 6 | 18.09.2010 16:37 |
ShowModal, close!!!! | Ital1cs | Помощь студентам | 3 | 02.04.2010 19:50 |
WaitForSingleObject | besserebrenik | Win Api | 3 | 15.02.2010 22:40 |
вызов из dll не ShowModal. | Roof | Общие вопросы Delphi | 7 | 25.07.2008 15:22 |
AlphaBlend + ShowModal | Cardagant | Общие вопросы Delphi | 2 | 11.06.2008 15:42 |