Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
ВнизThreadSafe... Найти похожие ветки
← →
Makhanev A.S. © (2004-04-25 15:23) [0]Вариант-1.
Есть поток.
Он генерит событие.
В обработчике события идёт обращение к VCL.
Вариант-2.
Есть поток.
Он генерит событие.
В обработчике события (обрабатывается наследником TComponent) генерится другое событие.
В "другом" обработчике идёт обращение к VCL.
Вопрос: здесь есть потокобезопасный вариант?
P.S.:Synchronize нигде не используется.
← →
Digitman © (2004-04-25 15:28) [1]
> здесь есть потокобезопасный вариант?
нигде
← →
Digitman © (2004-04-25 15:31) [2]обработчик события - просто некая процедура
процедура всегда выполняется в том трэде, который ее вызвал
механизм вызова процедур посылки/обработки оконных сообщений при этом не рассматривается - он работает по-иному
← →
Makhanev A.S. © (2004-04-25 18:20) [3]Выход:
чтобы сгенерить событие из потока, всегда используем Synchronize?
Что-то вроде: Synchronize(DoSomeEvent)
procedure TMyThread.DoSomeEvent;
begin
if Assigned(FOnSomeEvent) then FOnSomeEvent(params...)
end;
← →
evvcom © (2004-04-26 02:02) [4]Что-то вроде. А вообще в исходниках можно посмотреть, как реализован вызов TThread.OnTerminate;
← →
Talla2k © (2004-04-26 02:07) [5]Лично я делаю так:
-во вторичном потоке посылаю сообщение(что-то типа wm_user или если не лень то RegisterWindowMessage)
-в главном потоке проги улавливаю это сообщение и обращаю к VCL.
← →
Makhanev A.S. © (2004-04-26 14:50) [6]
> Digitman ©
Просьба проверить почту.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c