|
|
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
кстати, попробуй вместо Код: pascal 1. сделать Код: pascal 1. Понятно, что танец с бубном, но все же... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 20:00:53 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
Gallemarпотом эксепшен Format '%s' invalid or incompatible with argument и всё. Что могло не форматироваться в строку?GallemarНу и сам код: Код: pascal 1. 2. 3. И что бы там могло не форматироваться в строку, действительно?.. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 22:38:04 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
чччДGallemar, ну раз локальный коннект у тебя - то попробуй вызывать в конце fb_shutdown(). На 2.5 мне помогало. А как это сделать правильно? Получаю AV, у тебя как понимаю такая же проблема была, как решил? http://www.sql.ru/forum/1140365/kak-akkurutno-vyzvat-fb-shutdown ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 04:21:08 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
YuRockОн=деструктор. Во всяком случае, в IBX так. пробовал,не помогает, ни try ... expert c проверкой исключений на ib3.connected:=False; ib3.Close; ib3.Free;, ни free после finally. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 04:33:55 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
wadman,переписал, но пока работу с БД оставил как оно было у меня. Вот проект https://yadi.sk/d/lVonvmME3Lbfxb, проблема в том, что теперь вообще коннект к базе не проходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 06:02:50 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
wadman,переписал своё в таком виде: Код: 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. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. В логах: 01.08.2017 11:44:09.844 : Create connection 01.08.2017 11:44:10.339 : Create connection 01.08.2017 11:44:10.420 : Create connection 01.08.2017 11:44:10.500 : Create connection 01.08.2017 11:44:10.583 : Create connection 01.08.2017 11:44:10.668 : Create connection 01.08.2017 11:44:10.750 : Create connection 01.08.2017 11:44:10.852 : Create connection 01.08.2017 11:45:41.657 : Create connection 01.08.2017 11:45:42.121 : Create connection 01.08.2017 11:45:42.281 : Create connection 01.08.2017 11:45:42.474 : Create connection как будто поток вообще не запускается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 06:49:36 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
Gallemarкак будто поток вообще не запускается Флаг CreateSuspended означает, что поток создаётся приостановленным. Чтобы поток запустился, нужно вызвать у него Resume. Такое поведение нужно, чтобы проинициализировать поток после его создания. У вас же инициализация потока происходит в конструкторе. Поэтому можно в конструктор передавать флаг (CreateSuspended = false). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 08:13:02 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
goldmi45, понял,спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 08:17:11 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
теперь лог в таком виде: 01.08.2017 13:14:26.929 : Create connection 01.08.2017 13:14:27.167 : 648 Start execute 01.08.2017 13:16:38.978 : Create connection 01.08.2017 13:16:39.377 : 876 Start execute 01.08.2017 13:16:39.392 : Create connection 01.08.2017 13:16:39.461 : 1140 Start execute 01.08.2017 13:16:39.475 : Create connection 01.08.2017 13:16:39.548 : 1056 Start execute 01.08.2017 13:16:39.564 : Create connection 01.08.2017 13:16:39.634 : 1084 Start execute 01.08.2017 13:16:39.649 : Create connection 01.08.2017 13:16:39.717 : 1132 Start execute 01.08.2017 13:16:39.923 : Create connection 01.08.2017 13:16:39.995 : 1144 Start execute 01.08.2017 13:16:40.036 : Create connection 01.08.2017 13:16:40.104 : 1204 Start execute 01.08.2017 13:16:40.179 : Create connection 01.08.2017 13:16:40.247 : 1240 Start execute 01.08.2017 13:16:40.291 : Create connection 01.08.2017 13:16:40.361 : 1276 Start execute ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 08:20:39 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
Док[ Gallemarа у меня в потоке формы не открываются, никакие. я говорил про главную форму :) Вот смотри (извини, схематично, потому что на коленке без D7) Попробовал, не взлетело. https://yadi.sk/d/CtNoFhK23LbkvQ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 08:30:13 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
wadman, хм пробовал try except для connected:=false и close - ничего не получил, а так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. получаю: procedure TFIBDatabase.SetConnected(Value: Boolean); begin if csReading in ComponentState then FStreamedConnected := Value else if Value then begin Open end else Close; end; сейчас попробую фибовские ошибки поймать детальнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 08:41:41 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
Gallemar, Сделайте так: Код: 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. Следите за тем, что если у вас объект уничтожается (freeandnil), то при последующем обращении к нему гарантированно получаете AV. Т.е. соединение может и уничтожилось (если до этого не вылетели из процедуры Execute), но потом должны выполниться эти строчки: freeandnil(db3); CloseConnection; а в CloseConnection у вас идёт обращение к уже несуществующему объекту db3 и происходит Access violation. Так что до записи в лог даже не доходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 08:47:26 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
Gallemarсейчас попробую фибовские ошибки поймать детальнее Вынеси весь код из потока в отдельные процедуры: процедуру коннекта, процедуру дисконнекта, процедуру дергания запроса и основной цикл работы с файлами. И проверь их работу в основном потоке, а уж когда отладишь - выноси в отдельный поток. Не забывай про try except в операциях коннекта, дисконнекта, дергания запроса и работы с файлами. В случае ошибок поток может тихо умирать и потому твои коннекты (99%) остаются висеть до закрытия приложения (до выгрузки dll). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 09:22:13 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
goldmi45, поправил Код: 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. теперь в логе: 01.08.2017 14:18:57.769 : Create connection 01.08.2017 14:18:57.838 : 848 Start execute 01.08.2017 14:18:57.840 : 848 End execute 01.08.2017 14:18:57.845 : Close connection 01.08.2017 14:18:57.896 : Create connection 01.08.2017 14:18:57.964 : 1036 Start execute 01.08.2017 14:18:57.967 : 1036 End execute 01.08.2017 14:18:57.971 : Close connection 01.08.2017 14:18:58.032 : Create connection 01.08.2017 14:18:58.096 : 1064 Start execute 01.08.2017 14:18:58.099 : 1064 End execute 01.08.2017 14:18:58.103 : Close connection 01.08.2017 14:18:58.175 : Create connection 01.08.2017 14:18:58.249 : 1088 Start execute 01.08.2017 14:18:58.254 : 1088 End execute 01.08.2017 14:18:58.260 : Close connection коннекты больше не висят ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 09:23:18 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
Это вырезанный из моего проекта работающий код из многопоточного сервиса: Код: 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. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. Никаких утечек и умирания потоков, плюс логирование на всякие случаи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 09:25:06 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
wadmanЭто вырезанный из моего проекта работающий код из многопоточного сервиса: Никаких утечек и умирания потоков, плюс логирование на всякие случаи. Это надо всё продумать и обкатать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 09:49:17 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
Всем спасибо за помощь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 09:49:37 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
Получается, у меня не хватало деструктора,чтобы прибить отработавший поток? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 09:59:12 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
Gallemar, в качестве напутствияИгорь, у тебя бардак в коде. На его разбор у помогающих уходит много сил и времени. Возьми за правило (прости за тавтологию) соблюдать правила оформления и написания кода. Обрамляй потенциально "ошибочные" места блоками try..except, а места возможных утечек памяти блоком try..finally. Тогда ошибки будут очевидны даже при беглом взгляде, и ты не будешь иметь и половины тех проблем, которые описываешь здесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 10:12:02 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
GallemarЭто надо всё продумать и обкатать.замени свои 20689951 на эти: Код: 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. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 10:30:33 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
GallemarYuRockОн=деструктор. Во всяком случае, в IBX так. пробовал,не помогает, ни try ... expert c проверкой исключений на ib3.connected:=False; ib3.Close; ib3.Free;, ни free после finally. Потому, что туда "не доходит". Деструктор надо в finally вызывать, а не после except. P.S. Слабо понятен смысл этого потока, если даже соединение с базой, такая тяжелая операция, происходит в конструкторе (не в потоке). Зачем, не понятно. Я бы делал так примерно: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. И я уверен, что если в логе будет disconnected - соединения не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 18:43:09 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
YuRock, имхо, обработка ошибок должна быть внутри, а не снаружи try..finally ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 22:51:58 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
ДокYuRock, имхо, обработка ошибок должна быть внутри, а не снаружи try..finally А в чем разница в приведенном случае ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 22:57:11 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
schiДокYuRock, имхо, обработка ошибок должна быть внутри, а не снаружи try..finally А в чем разница в приведенном случае ?А разница есть. Если finally будет снаружи и в этом блоке произойдет исключение (что вполне вероятно), то оно окажется необработанным со всеми вытекающими. Что гораздо хуже хотя бы потому, что в лог оно не попадет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 23:58:43 |
|
||
|
Не срабатывает отключение от базы пока не закрыта форма.
|
|||
|---|---|---|---|
|
#18+
YuRockschiпропущено... А в чем разница в приведенном случае ?А разница есть. Если finally будет снаружи и в этом блоке произойдет исключение (что вполне вероятно), то оно окажется необработанным со всеми вытекающими. Что гораздо хуже хотя бы потому, что в лог оно не попадет. Видишь ли, в чем дело - при записи в лог с ненулевой вероятностью тоже может возникнуть исключение, остающееся необработанным с теми же вытекающими. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 11:28:55 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39498111&tid=2041964]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
205ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
80ms |
get tp. blocked users: |
2ms |
| others: | 225ms |
| total: | 560ms |

| 0 / 0 |
