|
13.04.2007, 11:55 | #1 |
Участник
|
Сообщения пользователям в аксапте - порядок важен!
Клиент 3.0 sp3 (build 3733)
Отправляем пользователю А 2 сообщения: сначала "1", потом "2". Клиент А закрывает пришедшие сообщения в порядке: сначала "1", потом "2" Итог: аксапта больше не реагирует на внешние раздражители , но приложение не зависло, hot key Alt-F4 - Аксапта предлагает закрыться. Cправедливо для клиентов sp3,sp4; на sp2 данная фича не работает.
__________________
--- SHiSHok |
|
13.04.2007, 14:56 | #2 |
Участник
|
у кого стоят SP выше или KR : баг не устранили?
использую рассылку сообщений - неприятно выходит как то. может есть у кого идеи как избежать неприятной ситуации.
__________________
--- SHiSHok |
|
13.04.2007, 22:16 | #3 |
Member
|
У меня на 3.0 сп5 кр3 воспроизвелось .
Бросайте это занятие как неперспективное. IMHO. В 3.0 есть проблемы с отправкой сообщений на другой АОС, насколько я помню. А в 4.0 от данной функции отказались. В поиске можно найти, как использовать в мирных целях net send...
__________________
С уважением, glibs® |
|
16.04.2007, 11:48 | #4 |
Участник
|
net send я то реализовал, все красиво, НО
1) при отсутствии получателя очень большая задержка 2) нельзя гарантировать присутствие получателя в сети (даже по списку пользователей AOC) вывод: при отправке через net send не не застрахованы от больших задержек при отправке (для моего случая это непозволительно) Отправка сообщения по AOCP лишена недостатка больших задержек, посему остается использовать ее.
__________________
--- SHiSHok |
|
16.04.2007, 19:53 | #5 |
Участник
|
Цитата:
Сообщение от SHiSHok
net send я то реализовал, все красиво, НО при отсутствии получателя очень большая задержка. вывод: при отправке через net send не не застрахованы от больших задержек при отправке (для моего случая это непозволительно) Отправка сообщения по AOCP лишена недостатка больших задержек, посему остается использовать ее.
|
|
17.04.2007, 09:29 | #6 |
Участник
|
рассылка сообщений участвует в локализованом механизьме резервирования. про потоки и асинхронность хорошая идея. Но я с ними не работал поэтому надо будет детально изучить механизм, а как обычно все должно быть сделано уже и давно ,поэтому пока оставлю так. Может вкратце справочные материалы изложите по работе с потоками. Функцию "NetMessageBufferSend" я реализовал, остается ее правильно вызвать из потока.
__________________
--- SHiSHok |
|
18.04.2007, 18:41 | #7 |
Участник
|
Цитата:
Работу с потоками и объектами синхронизации можно посмотреть по следующим ссылкам AOS и многопроцессорная машина - синхронизация потоков Фоновый поток в Аксапте Фоновый поток - реализация концепции агента Фоновый поток - через AOSLoadGen ERPKB : Таймер без формы |
|
|
За это сообщение автора поблагодарили: SHiSHok (2). |
12.01.2008, 00:28 | #8 |
Member
|
Цитата:
Сообщение от SHiSHok
...
1) при отсутствии получателя очень большая задержка ... Сегодня проверил. Вот такая конструкция WinAPI::shellExecute("cmd", "/c net send ddd 123", "", "", 0, false); в джобе отрабатывает мгновенно. Это при том, что никакого "ddd" в сети, естественно, нет. При этом из командной строки действительно висит минуту примерно (мерял на глаз). Как проявляется задержка?
__________________
С уважением, glibs® |
|
|
За это сообщение автора поблагодарили: zemlyn (1). |
15.01.2008, 16:13 | #9 |
Участник
|
Проверил. Акса действительно мгновенно отрабатывает. При этом: создается процесс cmd и 2 netsend (почему 2 непонимаю) и дальше время отработки net send никоим образом не волнует процесс Аксы (нет юзера - висит около минуты и умирает). В общем то такой метод вызова то что надо. А я вызывал следующим образом:
X++: // SHiSHok.FRA 20070419 static int NetSend(str _hostTo, str _msg) { DLL DLL = new DLL('NetApi32.dll'); DLLFunction DLLnetSend = new DLLFunction(DLL,"NetMessageBufferSend"); binary hostTo, msg; ; #WinAPI DLLnetSend.arg(ExtTypes::DWord, ExtTypes::Pointer, ExtTypes::DWord, ExtTypes::Pointer, ExtTypes::DWord); DLLnetSend.returns(ExtTypes::DWord); hostTo = winapi::ansi2unicode(_hostTo); msg = winapi::ansi2unicode(_msg); return DLLnetSend.call(0, hostTo, 0, msg, strlen(_msg)*2); }
__________________
--- SHiSHok |
|
15.01.2008, 16:17 | #10 |
Участник
|
Единственное но - это что один такой net send около 8 метров откушивает. т.е. 20 хостов не доступно - 160 метров ОЗУ кусь на минуту. как бы и не много, но и не мало.
__________________
--- SHiSHok |
|
16.01.2008, 01:04 | #11 |
Участник
|
Из этих 8 метров бОльшая часть - код и разделяемые данные самого net.exe и используемых им библиотек. За счет виндовых механизмов управления виртуальной памятью эти код и данные из адресных пространств разных процессов отображаются на одни и те же страницы физической памяти, т.е. реально в памяти находится лишь один экземпляр, к примеру, секции кода какой-нить kernel32.dll... так что ничего страшного при запуске 20 экземпляров программы, если она сама динамически не выделяет себе кучу памяти, не произойдет.
|
|
02.02.2008, 03:55 | #12 |
Участник
|
у нас на проекте у некоторых пользователей были остановлены соответствующие службы (второй программист) и при тестировании модификации net send просто не доходил ток что net send не панацея мы дублируем все сообщения по почте из практики это даже действенней чем net send
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
03.02.2008, 00:21 | #13 |
Member
|
Цитата:
Сообщение от ivas
...
ток что net send не панацея ... Вы так говорите, как будто Outlook уже встроили в Windows и его нельзя не использовать. Помнится мне одна презентация. Рассказывал про alerts в 4.0. Ну народ оживился. Было много вопросов. В конце состоялся такой примерно диалог (оформлено художественно, написано по памяти, не очень близко к тексту). — А как оно сообщит? — Вы с Outlook работаете? — Да. — А как Outlook отображает окно с уведомлением о новой почте представляете? — Да, конечно. — В Аксапте уведомления точно так же всплывают. — (Подумав человек спрашивает коварно) А если... Аксапта не будет запущена, то уведомление придет? — А если Outlook не будет запущен, то уведомление о пришедшем уведомлении электронной почты всплывет? — А, понятно. В конце концов компьютер может быть не включен . По этому поводу мне вспоминается шутка какого-то сотрудника ЦРУ, у которого спросили, какой компьютер самый безопасный. Он сказал примерно следующее. Компьютер должен быть отключен от локальной сети, а еще лучше выключен и закопан глубоко под землю в месте, которое никто не знает. Мораль моей басни вот в чем. Принцип "Против лома нет приема" работает не только в случае с net send. Цитата:
Сообщение от ivas
...
из практики это даже действенней чем net send ...
__________________
С уважением, glibs® |
|
03.02.2008, 01:57 | #14 |
Member
|
Цитата:
Сообщение от glibs
...
Мораль моей басни ...
__________________
С уважением, glibs® |
|