Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.26;
Скачать: 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 вся ветка

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

Наверх




Память: 0.44 MB
Время: 0.006 c
8-85135
annton
2002-04-20 00:49
2002.08.26
Глюк TImage


14-85232
V.exeR
2002-08-01 00:41
2002.08.26
На тему работы


1-84945
Strumpf
2002-08-14 00:13
2002.08.26
Господа! Помогите же, пожалуйста, в моей неравной борьбе...


1-85021
NikolayFirst
2002-08-16 12:02
2002.08.26
BDE Administrator


1-84973
Дмитрий Иванов
2002-08-15 03:25
2002.08.26
прога проге





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский