![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
![]()
Имеется некий поток, созданный на базе этого компонента. Внутри потока происходит загрузка графики из интернет. По окончании работы этого потока нужно вывести некую графическую информацию на дисплей. Если я из потока обращусь к процедуре вывода графики напрямую, то в ряде исключительных случаев (я так и не понял, в каких именно), получаю сбои в выводе графики (графика вылазит не там где нужно). Вопрос. Нужна ли синхронизация при работе с IdThreadComponent, и если да, как мне правильно обратится к процедуре синхронизации, и передать туда допустим строковые параметры?
P.S. Просьба не напоминать что: 1 - Инди это плохо. 2 - Что можно обойтись без инди. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Как обычно
![]() Код:
|
![]() |
![]() |
![]() |
#3 |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
![]()
Ну это понятно. А как быть с передачей параметров в процедуру? Через глобальные переменные? И мне не совсем удобно писать процедуру внутри обработчика, так как она сравнительно большая, и к тому же с ней работают и иные процедуры не относящиеся к потоку.
Последний раз редактировалось doktor255; 02.06.2014 в 23:29. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Попробуйте так:
Код:
|
![]() |
![]() |
![]() |
#5 |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
![]()
Написал же, процедура вне обработчика, так как процедуру используют модули и основного потока... Ну не писать же мне две одинаковых здоровенных процедуры.
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
doktor255, не суть это. Ваша процедура требует только параметры. Вот их и передавайте, а в методе синхронизации дергайте процедуру.
|
![]() |
![]() |
![]() |
#7 | |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
![]() Цитата:
Код:
Последний раз редактировалось doktor255; 03.06.2014 в 02:00. |
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Да, только так )
TThreadmethod - метод без параметров. |
![]() |
![]() |
![]() |
#9 | |||
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
![]() Цитата:
Цитата:
Цитата:
|
|||
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
procedure Synchronize(AMethod: TThreadMethod); overload;
procedure Synchronize(AMethod: TMethod); overload; Parameters AMethod: TThreadMethod Thread or procedural method to be executed in the main thread.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Синхронизация | kuba1981 | PHP | 9 | 06.05.2013 11:39 |
Синхронизация БД | Bright-rider | БД в Delphi | 3 | 19.06.2012 07:32 |
Синхронизация | tesseract | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 20.03.2012 10:31 |
Синхронизация | Jakethefish | PHP | 0 | 24.08.2011 11:17 |
Синхронизация | kostyan142 | Общие вопросы по Java, Java SE, Kotlin | 6 | 13.01.2010 01:39 |