powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ??
16 сообщений из 16, страница 1 из 1
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ??
    #32496628
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тоесть запускаю поток
Код: plaintext
1.
2.
3.
   hExit = CreateEvent(NULL,TRUE,FALSE,NULL);
   hSend = CreateEvent(NULL,TRUE,FALSE,NULL);
   _beginthread(&StartThread, 16384 ,&par);


реализация StartThread выглядит так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
void __cdecl  StartThread(void* Params)
{
   CoInitializeEx(NULL,COINIT_MULTITHREADED);
 //  ThreadParam * tp=(ThreadParam *)Params;
   HANDLE pHandles[ 2 ];
   pHandles[ 0 ] = hExit;
   pHandles[ 1 ] = hSend;
   while( 1 )
   {
     switch(WaitForMultipleObjects( 2 ,pHandles,false,INFINITE))
     {
       case WAIT_OBJECT_0: 
         break;
       case WAIT_OBJECT_0+ 1 :
         ShowMessage( "hSend" );
         break;
      }
   }
  delete tp;
  ::_endthread();
  CoUninitialize();
}


Поток запускается , работает

но если я вызову теперь метод, где будет

SetEvent(hSend) или SetEvent(hExit)

то нифига ни чего не произойдет ,

причем , я ради эксперемента сделал все это в новом приложении ,
не СОМ то там все работает на ура ...





i_i
(';')
(V),(V),,
JS
...
Рейтинг: 0 / 0
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ??
    #32497820
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если создать именованные события?

Чесно говоря, не понял, как клиент получает хэндлы этих событий у себя?

А можно ещё именованые мутехы сделать. Они точно уникальны в рамках одной системы.
...
Рейтинг: 0 / 0
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ??
    #32497894
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Клиент ни как не получает , это внутри СОМ.
пробовал и именные евенты создовать такая же муть ...

просто идея была токова чтобы запустить поток
и в нем уже вызывать метод оповешение о событие клиентов .
тобищь Fire_OnSend (...)





i_i
(';')
(V),(V),,
JS
...
Рейтинг: 0 / 0
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ??
    #32499939
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то всё сложно.

Ну а WaitForSingleObject работает?

А то, чтоб не мучиться, завести семафор, и по WaitForSingleObject с него оповещать клиентов.
...
Рейтинг: 0 / 0
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ??
    #32500142
_Konst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не знаю точно ли по теме, но вот какое предостережение я вычитал в msdn

msdnUse caution when calling the wait functions and code that directly or indirectly creates windows. If a thread creates any windows, it must process messages. Message broadcasts are sent to all windows in the system. A thread that uses a wait function with no time-out interval may cause the system to become deadlocked. Two examples of code that indirectly creates windows are DDE and COM CoInitialize. Therefore, if you have a thread that creates windows, use MsgWaitForMultipleObjects or MsgWaitForMultipleObjectsEx, rather than WaitForMultipleObjects.

CoInitialize - это как раз твой случай.
Может вся система (COM) вешается, потому и не происходит выхода из WaitForMultipleObjects?
...
Рейтинг: 0 / 0
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ??
    #32500322
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я уже переделал как на мелкосовтском сайте расписано было ,
+ некоторую реализацию событий как на VC :) (так как все пытаюсь сделать на Buildere)

только теперь одно но

Если юзать обычные ну как сказать ?! ,а ну, приложение клиенты ,
то между собой у них все замечательно :)
события ловятся и с передачей управление клиентам все ок :)
чего я и хотел


сейчас буду пробовать как они работают если находятся , на разных компах .


но вот если как клиент вступает в эту роль MSSQL
то нифига не происходит ...


i_i
(';')
(V),(V),,
JS
...
Рейтинг: 0 / 0
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ??
    #32500366
_Konst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ничего не понял.. :(
но желаю успехов.
Слушай JibSkeart, а у тебя с разных компов пользователи под одним и тем же account-ом будут коннектится к сом - серверу или под разными??
Я что-то никак не пойму, как сделать, если каждый клиент под своим account-ом, чтобы exe-сервер загружался только один раз для всех?
...
Рейтинг: 0 / 0
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ??
    #32500426
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что бы для каждого коннекта создавался один экземпляр кокласса нужно обявить его как Синглетон (SINGLETON)


i_i
(';')
(V),(V),,
JS
...
Рейтинг: 0 / 0
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ??
    #32500490
_Konst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, нужно, чтобы всегда был всего один экземпляр exe-Сервера - один процесс!
А у меня если на трех разных компах залогинится под разными account-ами и запустить с них программу-клиент, то стартуют три процесса сервера на машине-сервере. Если на все три компа зайти под одинаковым account-ом, то СОМ-сервер стартует в единственном экземпляре. Как бы сделать тоже самое и для разных account-ов, кроме прописывания явного account-а в COSERVERINFO?
...
Рейтинг: 0 / 0
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ??
    #32500530
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может с настройками в DCOM ?
попробуй поигратся с параметрами безопасности итд .
у меня если я запущю с трех разных машин клиентов
ну допустим win2000 (2-е машины), win98 то запустится один экземпляр сервера .
причем на на Win2k как админ а на win98 как гость типа .
но у меня для этого DCOM сервера вся безопастность итд обрублена




i_i
(';')
(V),(V),,
JS
...
Рейтинг: 0 / 0
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ??
    #32500535
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну все и с MSSQL-ем разобрался теперь и с него события срабатывют :)

i_i
(';')
(V),(V),,
JS
...
Рейтинг: 0 / 0
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ??
    #32500590
_Konst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поздравляю!

JibSkeartМожет с настройками в DCOM ?
попробуй поигратся с параметрами безопасности итд .
у меня если я запущю с трех разных машин клиентов
ну допустим win2000 (2-е машины), win98 то запустится один экземпляр сервера .
причем на на Win2k как админ а на win98 как гость типа .
но у меня для этого DCOM сервера вся безопастность итд обрублена
А какое имя пользователя для процесса сервера у тебя пишет TaskManager?
...
Рейтинг: 0 / 0
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ??
    #32500675
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всмусле ??
у меня диспетчер задачь не показывает имен пользователей ...
если что у меня обычная рабочая группа, хотя не думаю что это
как то меняет суть :)


i_i
(';')
(V),(V),,
JS
...
Рейтинг: 0 / 0
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ??
    #32500677
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я имею ввиду что он запускается на моем компе win2k



i_i
(';')
(V),(V),,
JS
...
Рейтинг: 0 / 0
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ??
    #32500740
_Konst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все разобрался! :)
Надо было просто СОМ-сервер самому запустить на серверной машине, предварительно выставив в реестре признак "Launch as interactive user". Тогда клиенты со всех прочих машин начинают с ним нормально общаться. А если кто-то из клиентов пытается обратиться к еще не запущенному серверу, то его ждет облом.
...
Рейтинг: 0 / 0
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ??
    #32500844
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хмм ...

учтем на будущее но пока у меня все без проблем :)
хотя кто знает может натолкнусь в дальнейшей эксплуатации


i_i
(';')
(V),(V),,
JS
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ??
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]