
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
26.04.2004, 12:54
|
|||
|---|---|---|---|
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ?? |
|||
|
#18+
тоесть запускаю поток Код: plaintext 1. 2. 3. реализация StartThread выглядит так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Поток запускается , работает но если я вызову теперь метод, где будет SetEvent(hSend) или SetEvent(hExit) то нифига ни чего не произойдет , причем , я ради эксперемента сделал все это в новом приложении , не СОМ то там все работает на ура ... i_i (';') (V),(V),, JS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.04.2004, 08:35
|
|||
|---|---|---|---|
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ?? |
|||
|
#18+
А если создать именованные события? Чесно говоря, не понял, как клиент получает хэндлы этих событий у себя? А можно ещё именованые мутехы сделать. Они точно уникальны в рамках одной системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.04.2004, 09:30
|
|||
|---|---|---|---|
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ?? |
|||
|
#18+
Клиент ни как не получает , это внутри СОМ. пробовал и именные евенты создовать такая же муть ... просто идея была токова чтобы запустить поток и в нем уже вызывать метод оповешение о событие клиентов . тобищь Fire_OnSend (...) i_i (';') (V),(V),, JS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2004, 10:34
|
|||
|---|---|---|---|
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ?? |
|||
|
#18+
Как-то всё сложно. Ну а WaitForSingleObject работает? А то, чтоб не мучиться, завести семафор, и по WaitForSingleObject с него оповещать клиентов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2004, 11:34
|
|||
|---|---|---|---|
|
|||
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ?? |
|||
|
#18+
Не знаю точно ли по теме, но вот какое предостережение я вычитал в 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? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2004, 12:24
|
|||
|---|---|---|---|
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ?? |
|||
|
#18+
Да я уже переделал как на мелкосовтском сайте расписано было , + некоторую реализацию событий как на VC :) (так как все пытаюсь сделать на Buildere) только теперь одно но Если юзать обычные ну как сказать ?! ,а ну, приложение клиенты , то между собой у них все замечательно :) события ловятся и с передачей управление клиентам все ок :) чего я и хотел сейчас буду пробовать как они работают если находятся , на разных компах . но вот если как клиент вступает в эту роль MSSQL то нифига не происходит ... i_i (';') (V),(V),, JS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2004, 12:40
|
|||
|---|---|---|---|
|
|||
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ?? |
|||
|
#18+
Ничего не понял.. :( но желаю успехов. Слушай JibSkeart, а у тебя с разных компов пользователи под одним и тем же account-ом будут коннектится к сом - серверу или под разными?? Я что-то никак не пойму, как сделать, если каждый клиент под своим account-ом, чтобы exe-сервер загружался только один раз для всех? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2004, 12:58
|
|||
|---|---|---|---|
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ?? |
|||
|
#18+
Что бы для каждого коннекта создавался один экземпляр кокласса нужно обявить его как Синглетон (SINGLETON) i_i (';') (V),(V),, JS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2004, 13:16
|
|||
|---|---|---|---|
|
|||
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ?? |
|||
|
#18+
Нет, нужно, чтобы всегда был всего один экземпляр exe-Сервера - один процесс! А у меня если на трех разных компах залогинится под разными account-ами и запустить с них программу-клиент, то стартуют три процесса сервера на машине-сервере. Если на все три компа зайти под одинаковым account-ом, то СОМ-сервер стартует в единственном экземпляре. Как бы сделать тоже самое и для разных account-ов, кроме прописывания явного account-а в COSERVERINFO? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2004, 13:28
|
|||
|---|---|---|---|
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ?? |
|||
|
#18+
Может с настройками в DCOM ? попробуй поигратся с параметрами безопасности итд . у меня если я запущю с трех разных машин клиентов ну допустим win2000 (2-е машины), win98 то запустится один экземпляр сервера . причем на на Win2k как админ а на win98 как гость типа . но у меня для этого DCOM сервера вся безопастность итд обрублена i_i (';') (V),(V),, JS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2004, 13:30
|
|||
|---|---|---|---|
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ?? |
|||
|
#18+
Ну все и с MSSQL-ем разобрался теперь и с него события срабатывют :) i_i (';') (V),(V),, JS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2004, 13:42
|
|||
|---|---|---|---|
|
|||
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ?? |
|||
|
#18+
Поздравляю! JibSkeartМожет с настройками в DCOM ? попробуй поигратся с параметрами безопасности итд . у меня если я запущю с трех разных машин клиентов ну допустим win2000 (2-е машины), win98 то запустится один экземпляр сервера . причем на на Win2k как админ а на win98 как гость типа . но у меня для этого DCOM сервера вся безопастность итд обрублена А какое имя пользователя для процесса сервера у тебя пишет TaskManager? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2004, 14:04
|
|||
|---|---|---|---|
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ?? |
|||
|
#18+
Всмусле ?? у меня диспетчер задачь не показывает имен пользователей ... если что у меня обычная рабочая группа, хотя не думаю что это как то меняет суть :) i_i (';') (V),(V),, JS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2004, 14:04
|
|||
|---|---|---|---|
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ?? |
|||
|
#18+
я имею ввиду что он запускается на моем компе win2k i_i (';') (V),(V),, JS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2004, 14:26
|
|||
|---|---|---|---|
|
|||
Почему внутри COM не ловит SetEvent(...) WaitForMultipleObjects ?? |
|||
|
#18+
Все разобрался! :) Надо было просто СОМ-сервер самому запустить на серверной машине, предварительно выставив в реестре признак "Launch as interactive user". Тогда клиенты со всех прочих машин начинают с ним нормально общаться. А если кто-то из клиентов пытается обратиться к еще не запущенному серверу, то его ждет облом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&mobile=1&tid=2035043]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 201ms |
| total: | 377ms |

| 0 / 0 |
