Вниз
Скачать: CL | DM;

COM-объект в нитке   Найти похожие ветки 

← →
VaS ©   (2002-08-15 12:33) [0]

Процесс. В нем нитка. На старте нитки создаем СОМ-объект и создаем подписку (через IConnectionPointContainer), передавая серверу интерфейс объекта, созданного в этой же нитке. После чего нитка входит в бесконечный цикл с периодическим вызовом Sleep(100). Все нормально. Теперь сервер вызывает метод интерфейса клиентского объекта. Нитка сервера, откуда идет вызов останавливается. На клиенте вызова нет. Ясно, что для обработки вызовов СОМ нужно обрабатывать сообщения Windows. Вариант нитевой процедуры:


while not Terminated do
begin
Sleep(100);
MsgWaitForMultipleObjects(1, Handle, TRUE, 500, QS_ALLPOSTMESSAGE);
PeekMessage(_Msg, 0, 0, 0, PM_NOREMOVE);
end;

Ни к чему не приводит.
Что интересно, после вызова terminate для данной нитки один вызов сервера таки приходит...
В общем, хотелось бы увидеть стандартную реализацию неглавной нити с работающими объектами СОМ внутри :)
ЗЫ: создание апартамента в нити конечно произвожу.


← →
VaS ©   (2002-08-15 12:48) [1]

Дико извиняюсь, забыл обрабатывать полученное из очереди сообщение:


while not Terminated do
begin
MsgWaitForMultipleObjects(0, Handle, FALSE, 100, QS_ALLINPUT);
PeekMessage(_Msg, 0, 0, 0, PM_REMOVE);
DispatchMessage(_Msg);
end;


← →
Ученик ©   (2002-08-15 12:54) [2]

>VaS © (15.08.02 12:48)

Наверно
if PeekMessage(_Msg, 0, 0, 0, PM_REMOVE) then begin
TranslateMessage(_Msg);
DispatchMessage(_Msg);
end


← →
Ученик ©   (2002-08-15 12:55) [3]

Или While PeekMessage(_Msg, 0, 0, 0, PM_REMOVE) do


← →
VaS ©   (2002-08-16 08:34) [4]

Да нет, все работает :) Я DispatchMessage() забыл в первом варианте.



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.014 c
1-85101
vuk
2002-08-15 00:41
2002.08.26
Вопрос по ToolsAPI


3-84940
DenisLK
2002-07-19 11:07
2002.08.26
Как в Memo перейти на последнюю строку?


6-85148
atmospheric
2002-06-15 00:01
2002.08.26
Как из своей программы послать SMS.


1-85035
Cr@sh
2002-08-16 11:54
2002.08.26
Вопрос по созданию системы отмены действий.


7-85275
ZavDim
2002-06-13 13:04
2002.08.26
Динамическое подключение библиотеки




   Наверх