|
|
|
Ole word зависает.
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток господа, очень нужна помощь. И так есть очень страшный legacy проект, в нем реализована печать, с помощью ole. Всё работает в 99% случаях хорошо. Однако есть алгоритм направляющий на печать по пачке документов. Примерно вот такой код, приведу пример дабы отсечь многие не верные советы. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. Всё бы было ничего, но когда слишком много итераций word может зависнуть (произвольно, при повторе, может все обработать как нужно) и на стадии quit программа просто висит и можно её только убить. Процесс word в свою очередь висит от силы минуты 2 (хотя не должен), но затем умирает, а программа продолжает ждать, пока тот воскреснет. Грешу на антивирус или другое сторонние ПО, которое могло вмешаться. И так вопрос, как выполнить команду и не ждать word. Решение что приходят на ум это реализовать в потоке или в отдельном приложении, но кастыли не хочу строить, к тому же потоки мне можно сказать не доступны по ряду причин. Буду рад помощи, заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2019, 13:38 |
|
||
|
Ole word зависает.
|
|||
|---|---|---|---|
|
#18+
обязательно в каждой итерации новый экземпляр word создавать ? можно же в одном открывать/закрывать документы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2019, 14:55 |
|
||
|
Ole word зависает.
|
|||
|---|---|---|---|
|
#18+
Quit в OLE Офиса вообще очень странная штука, с Ёкселем в свое время натрахался. В самом деле лучше максимально сократить его использование ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2019, 15:04 |
|
||
|
Ole word зависает.
|
|||
|---|---|---|---|
|
#18+
RackotProРешение что приходят на ум это реализовать в потоке или в отдельном приложении,Не поможет. Все управление все равно передается в однопоточный Word RackotProБуду рад помощи,Для начала разGhost Writerобязательно в каждой итерации новый экземпляр word создавать ? можно же в одном открывать/закрывать документы.а два - уберите скрытие окна Word и посмотрите, что он делает? Может там диалоговое окно появляется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2019, 15:06 |
|
||
|
Ole word зависает.
|
|||
|---|---|---|---|
|
#18+
Ghost Writer, хм... логично, нужно попробовать), но код громоздкий модуль везде используется, очень много правок придется сделать. Но спасибо, за наводку, что-то как-то в голову не приходило)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2019, 15:06 |
|
||
|
Ole word зависает.
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, очень сложно воспроизвести, не всегда удается, у пользователей как назло постоянно, у меня реже. С visible в тру не получилось повторить глюк, может стоит ещё посидеть попытаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2019, 15:09 |
|
||
|
Ole word зависает.
|
|||
|---|---|---|---|
|
#18+
RackotPro, Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2019, 15:16 |
|
||
|
Ole word зависает.
|
|||
|---|---|---|---|
|
#18+
Cоздавай CreateOleObject + DisplayAlerts := False один раз вне цикла А в цикле цепляйся к нему GetOleObject Кстати, Quit нифига не завершает этот Word ( Почему Эксель завершается только после CoUninitialize? ) и в цикле он не нужен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2019, 15:39 |
|
||
|
Ole word зависает.
|
|||
|---|---|---|---|
|
#18+
Gator, немогу, точнее не хочу, большой легаси проект в нем модуль отвечающий за печать, в нем создание уничтожение из вне вызывается много раз, в итоге править весь проект, а это оооочень много модулей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2019, 16:09 |
|
||
|
Ole word зависает.
|
|||
|---|---|---|---|
|
#18+
RackotPro, Молодой, ленивый... Ну, живи с проблемой или отвяжись от OLE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2019, 16:15 |
|
||
|
Ole word зависает.
|
|||
|---|---|---|---|
|
#18+
RackotProв нем модуль отвечающий за печать, в нем создание уничтожение из вне вызывается много раз,Т.е. в реальности код такой? Код: pascal 1. 2. Где Print это процедура из этого модуля с созданием и удалением? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2019, 16:19 |
|
||
|
Ole word зависает.
|
|||
|---|---|---|---|
|
#18+
Плохой подход. - Нужно один раз создать вне цикла -- В цикле много раз обратиться к созданному - Освободить в вне цикла ранее сожданное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2019, 16:25 |
|
||
|
Ole word зависает.
|
|||
|---|---|---|---|
|
#18+
RackotProточнее не хочу Страдай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2019, 16:48 |
|
||
|
Ole word зависает.
|
|||
|---|---|---|---|
|
#18+
Необязательно каждый раз запускать Word заново. Можно попробовать что-то типа этого: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2019, 16:51 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39828774&tid=2039350]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
19ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 311ms |

| 0 / 0 |
