|
|
|
FDEventAlerter.Options.Synchronize в консольном прилож и dll - могут ли быть тут проблемы?
|
|||
|---|---|---|---|
|
#18+
Добрый день! Помогите найти причину Access Violation? Поясню непонятное название темы ) Набросал небольшую утилиту к базе данных, которая формирует rtf-документы. Смысл ее в том, что она слушает Events от FB, когда получает, читает таблицу очереди, и формирует ожидаемые документы. Программка консольная, x64, стоит на сервере. Если ее запустить, то она сразу сама читает очередь (без FDEventAlerter.OnAlert). Чтобы срабатывал OnAlert, поменял Options.Synchronize у FDEventAlerter в False; Для некоторых типов все заработало, она получает команду, создает файлы, сохраняет их в базу, все отлично. Для следующего типа понадобилось склонять ФИО и должности (через PadegUC.dll). И, в общем, столкнулся, что если программа читает таблицу очереди и формирует документы при своем запуске (а не по команде OnAlert), то документ формируется (ФИО и должность склоняются). А если команда приходит в уже работающее приложение через OnAlert, то в момент вызова функции из dll происходит Acess Violation. Больше ни в чем, кроме способа вызова, разницы не вижу. Если я в правильном направлении думаю, подскажите, как организовать безглючную работу? Спасибо! Основной текст, так сказать Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 16:02 |
|
||
|
FDEventAlerter.Options.Synchronize в консольном прилож и dll - могут ли быть тут проблемы?
|
|||
|---|---|---|---|
|
#18+
Блин, а файрбердовский padegfb.dll рушит FB (( то срабатывает, а то бац: SERVER Mon Jul 09 16:27:02 2018 The user defined function: GETAPPOINTMENTPADEG referencing entrypoint: GetAppointmentPadeg in module: PadegFB caused the fatal exception: Access violation. The code attempted to access a virtual address without privilege to do so. This exception will cause the Firebird server to terminate abnormally. SERVER Mon Jul 09 16:29:59 2018 The user defined function: GETAPPOINTMENTPADEG referencing entrypoint: GetAppointmentPadeg in module: PadegFB caused the fatal exception: Access violation. The code attempted to access a virtual address without privilege to do so. This exception will cause the Firebird server to terminate abnormally. и как теперь склоняться )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 16:37 |
|
||
|
FDEventAlerter.Options.Synchronize в консольном прилож и dll - могут ли быть тут проблемы?
|
|||
|---|---|---|---|
|
#18+
Devillioи как теперь склоняться ))Брать исходники и смотреть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 18:00 |
|
||
|
FDEventAlerter.Options.Synchronize в консольном прилож и dll - могут ли быть тут проблемы?
|
|||
|---|---|---|---|
|
#18+
Приложение что-то делает в ожидании события или просто ждет? Потому что фоновый поток с Synchronize (на чем сделан FDEventAlerter) на консольном приложении это уже достаточно стремная штука. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 18:28 |
|
||
|
FDEventAlerter.Options.Synchronize в консольном прилож и dll - могут ли быть тут проблемы?
|
|||
|---|---|---|---|
|
#18+
Devillio, смотрите CheckSynchronize в System.Classes если synchronize вызывается в фоновом потоке dll, то естественно dll-ка и апликуха должна быть собрана с пакетами если делать консоль, то кто-то должен вызывать CheckSynchronize да, безобразная реализация, но вам с этим жить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 20:07 |
|
||
|
FDEventAlerter.Options.Synchronize в консольном прилож и dll - могут ли быть тут проблемы?
|
|||
|---|---|---|---|
|
#18+
Devillioа файрбердовский padegfb.dll рушит FB у Firebird нет никакого pagegfb.dll. Это какая-то самописная либа. И если она криво написана, то да, будет рушить любой exe, который ее вызывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2018, 21:31 |
|
||
|
FDEventAlerter.Options.Synchronize в консольном прилож и dll - могут ли быть тут проблемы?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)если synchronize вызывается в фоновом потоке dll, то естественно dll-ка и апликуха должна быть собрана с пакетамиесли в "чистом" dll - то вообще будет зависон всегда. Только в BPL есть шансы, что сработает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2018, 21:58 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39672274&tid=2040635]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
180ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 528ms |

| 0 / 0 |
