![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Форумчанин
Регистрация: 13.05.2010
Сообщений: 670
|
![]()
Эт я просто на вашем форуме код нашёл, вот он
Код:
Код:
|
![]() |
![]() |
![]() |
#12 |
Форумчанин
Регистрация: 13.05.2010
Сообщений: 670
|
![]()
Пробывал так
Код:
|
![]() |
![]() |
![]() |
#13 |
Форумчанин
Регистрация: 13.05.2010
Сообщений: 670
|
![]()
Проблему понял, но как решить нет. Если с одного потока грузится изображение в Image, то второму потоку на это пофиг и грузит своё. В итоге получается картинка поверх картинки. Можно ли это как то приостановить?
|
![]() |
![]() |
![]() |
#15 |
Форумчанин
Регистрация: 13.05.2010
Сообщений: 670
|
![]()
Легче таскать по ссылкам, чем предложить альтернативу showmessage, дабы не нажимать её постоянно что бы выполнился тот код который для других потоков не должен быть доступен
![]() |
![]() |
![]() |
![]() |
#16 | |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
Так вам предложили альтернативу -- MessageBox(), её можно вызывать когда угодно из какого угодно потока. Другой вопрос, на сколько вам такая альтернатива нужна, т.к. до сих пор не понятно, что и с чем у вас должно быть синхронизировано.
Цитата:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
|
![]() |
![]() |
![]() |
#17 |
Форумчанин
Регистрация: 13.05.2010
Сообщений: 670
|
![]()
2 и более потоков могут одновременно использовать как showmodal так и TMemoryStream, если не ставить showmessage то появляется showmodal на ней картинка из TMemoryStream, а следом другая, после чего showmodal само собой не открывается. Из-за этого я и спросил есть ли альтернатива showmessage дабы не выводить её постоянно что бы притармазнуть параллельный поток и дождаться клика по модальной форме. А критическая секция тут не ваиант, т.к. потоки выполняются параллельно и у обоих это критсекция
Последний раз редактировалось bulldog5293; 24.01.2011 в 00:54. |
![]() |
![]() |
![]() |
#18 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
Если у вас одна критическая секция выполняется в обоих потоках одновременно (это единственное, что я понял из ваших слов), то это не критическая секция, а критическая дырка.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#19 |
Форумчанин
Регистрация: 13.05.2010
Сообщений: 670
|
![]() Код:
|
![]() |
![]() |
![]() |
#20 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
Если у вас CS объявлена локально в каждом потоке, то нет, не получится.
Да даже если и глобально, приведенный выше код защищает только момент создания img, т.е. 2 потока не смогут одновременно создать img (опять же, х.з. локальный он или глобальный), но спокойно смогут одновременно выполнить Form2.Image1.Picture.Assign(png); Т.е. должно быть как-то так: Код:
Правило очень простое: всё, что можно отнести к VCL (кнопки, картинки, лейблы, поля ввода, вобще всё визуальное и большинство невизуального) должно всегда исключительно работать только в главном потоке. Именно для этого и ввели костыль под названием Synchronize().
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Формы 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 |