Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.04;
Скачать: CL | DM;

Вниз

Как сделать Ассинхронный вызов из основного потока в потокTThread   Найти похожие ветки 

 
Rule ©   (2006-04-27 17:46) [0]

причем так чтобы метод выполнялся в потоке TThread, грубо говоря нада дать команду на выполнение некого метода с некоторым параметров из основного потока в не основной и дождаться пока он выполнится ...
кто чего подскажет, как это грамотней сделать ???


 
Rule ©   (2006-04-27 17:53) [1]

да чуть не забыл, вот этот поток TThread находится в цикле в методе Execute  и там есть TThreadList  в который записываются команды, которые должен обрабатывать запрос, но это же получается ассинхронный вызов, как в существующую структуру впихнуть синхронный вызов ???


 
Внук ©   (2006-04-27 18:27) [2]

Вероятно, нужно использовать какой-либо объект синхронизации, например Event, которого должен ждать главный поток.


 
Eraser ©   (2006-04-27 18:29) [3]


> Rule ©

велосипеды изобретать думаю не стОит, а стОит организовать стандартную очередь сообщений, с пом. ф-ии Get/PeekMessage. И отсылать сообщения с пом. PostThreadMessage или даже создать эфимерное окно, чтобы обрабатывать синхронные сообщения, отосланные с пом. SendMessage.


 
Rule ©   (2006-04-27 18:48) [4]

Внук ©   (27.04.06 18:27) [2]
о вот это идея ... спасибо, чет не подумал както сразу


 
Rule ©   (2006-04-27 18:49) [5]

Eraser ©   (27.04.06 18:29) [3]
да уже переделывать все некошерно, а велосипед  я не придумывал а сдер у Марко Кэнту, который для меня является большим авторитетом ...


 
Leonid Troyanovsky ©   (2006-04-28 03:09) [6]


> Rule ©   (27.04.06 17:46)  

> кто чего подскажет, как это грамотней сделать ???


Выполнить оный метод в первичном потоке, и ничего
ожидать не придется.
Т.е., в данной постановке, не видно смысла в
использовании вторичного потока.

--
Regards, LVT.


 
Внук ©   (2006-04-28 10:21) [7]

>>Leonid Troyanovsky ©   (28.04.06 03:09) [6]
 Смысла не видно сразу, разве что учебная задача :)


 
Сергей М. ©   (2006-04-28 10:58) [8]


> Внук ©   (28.04.06 10:21) [7]


Автор, вероятно, имел ввиду, что осн.поток во время ожидания результата работы доп.потока должен реагировать на события UI.


> Rule


Если мои телепатические способности не так уж плохи, то тебе поможет MsgWaitForMultipleObjects().


 
GrayFace ©   (2006-04-28 11:13) [9]

> Внук ©   (27.04.06 18:27) [2]
> Вероятно, нужно использовать какой-либо объект синхронизации,
>  например Event, которого должен ждать главный поток.

Или Suspend/Resume. Только проблема будет, если старый приказ поток еще не вымолнил, а ему новый дают. Короче, либо очередь сообщений, либо отдельный поток для каждой процедуры. Второе предпочтительно. Если же нужно подряд отправит на выполнение N-ое кол-во действий, то весь цикл расположи в доп. потоке.


 
Rule ©   (2006-04-28 21:24) [10]

огромное всем спасибо, я так почиатл и действительно надо быть телепатом чтоб ответить на мой вопрос :-))), дело в том что поток из цикла останавливать нельзя так как он выполняет ещё команды из дургих потоков кроме основного, но ассинхронные ... ситуацию я разрулил,  я посылаю ассинхронный запрос, и жду когда прийдет ответ в виде постмессадже ... вот и все ... чтоб не ломать существующее и не городить сложных конструкций обошелся таким решением, работает изумительно :-)))
да кстати почему именно не выполнять это в основном потоке, да потомучто в доп, потоке идет работа с привередливым ОЛЕ сервером, который реализует доступ к кассововму аппарату, а так как там схема симпл аппартмент и есть коллбек, то возникают дедлоки,  с этих соображений не хочу создавать прокси в друких потоках на этот объект, а просто все разруливаю в одном потоке, а события ловлю в другом потоке, которые работают в разных аппартментах и исключают дедлоки ...
вроде попытался доступней все разъяснить ...



Страницы: 1 вся ветка

Текущий архив: 2006.06.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.048 c
2-1148150601
za4em
2006-05-20 22:43
2006.06.04
Координаты


2-1147842526
petvv
2006-05-17 09:08
2006.06.04
Всем о... спасибо за ответы на мой вопрос


2-1147762028
ANB
2006-05-16 10:47
2006.06.04
Как отправить письмо с вложением без файла ?


15-1147237978
Ega23
2006-05-10 09:12
2006.06.04
С Днём рождения! 9 мая


5-1133311365
asdqwer
2005-11-30 03:42
2006.06.04
Динамическое присвоение метода компоненту в DLL