|
|
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Док сделай так: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2020, 17:49 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Где вероятный AV показать покажи, только пальцем :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2020, 23:39 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Никогда не стоит делать вот так. Код: pascal 1. 2. 3. 4. 5. Но код Дока слава богу работать не будет. dstOtchetD.Open; пока не отработает в основном потоке до художеств с Application.ProcessMessages не дойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2020, 00:50 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Док покажи, только пальцем :) Док Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2020, 14:17 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, тебя смущает, что поток может быть не создан? Ну дык, или делай FreeOnTerminate = False и прибивай вручную (я обычно так и делаю), или проверяй наличие объекта. Или я неправильно мыслю? Или ты хочешь универсально-эффективный код привести? :) Mixrud, да, вы верно подметили. В контексте задачи ТС ему бы коннект в доп.потоке сделать, а наружу вывести модальный сплэш. Согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2020, 08:21 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Док _Vasilisk_, тебя смущает, что поток может быть не создан? Ну дык, или делай FreeOnTerminate = False и прибивай вручную (я обычно так и делаю), или проверяй наличие объекта. Или я неправильно мыслю? Или ты хочешь универсально-эффективный код привести? :) Его смущает, что за время выполнения кода между 'NewThread.Resume' и 'while not NewThread.Terminated do' поток может уже завершиться и освободиться, поэтому NewThread (.Terminated) будет указывать на мусор. Более того, как только поток завершится то NewThread (.Terminated) гарантированно будет указывать на мусор, и будет там AV или нет зависит только от того - успеет ли кто-нибудь переписать память, на которую указывает NewThread. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2020, 09:23 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Док, mea culpa. Потер предыдущее сообщение, потому что при практически любом раскладе получается хрень: если FreeOnTerminate = True, то при уничтожении экземпляра NewThread там все равно остается мусор (т.е. NewThread <> nil), а значит _Vasilisk_ прав в отношении возможного AV. Вот кстати вопрос, а если в деструкторе TNewThread сделать так: Код: pascal 1. 2. 3. 4. 5. то всяческие проверки Assigned() прокатят? ps. насчет ProcessMessages я так ни разу и не услышал убедительных аргументов, почему его не стоит применять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2020, 10:46 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2020, 11:53 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Док то всяческие проверки Assigned() прокатят? Код: pascal 1. 2. 3. 4. Док ps. насчет ProcessMessages я так ни разу и не услышал убедительных аргументов, почему его не стоит применять. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. запусти программу и понажимай несколько раз кнопку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2020, 12:18 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ запусти программу и понажимай несколько раз кнопку а тут-то оно (ProcessMessages) зачем? istrebitel, гуд, возьму на заметку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2020, 16:32 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
09.10.2020 16:32, Док пишет: > а тут-то оно (ProcessMessages) зачем? наглядное пособие Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2020, 16:33 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ запусти программу и понажимай несколько раз кнопку Ну так и болгаркой можно что-то нужное отхватить, но это ж не повод её запретить. Просто надо понимать, как всё работает. Тогда и PM не страшен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2020, 17:26 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
09.10.2020 17:26, Fr0sT-Brutal пишет: > Ну так и болгаркой можно что-то нужное отхватить, но это ж не повод её запретить. > Просто надо понимать, как всё работает. Тогда и PM не страшен не надо пользовать то что надо не так как надо! Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2020, 17:28 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Док а тут-то оно (ProcessMessages) зачем? Чем мой пример принципиально отличается от твоего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2020, 19:48 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Чем мой пример принципиально отличается от твоего? в твоем примере без PM интерфейс должен замереть? Мимопроходящий не надо пользовать то что надо не так как надо! Саш, может ты мне вразумительно сможешь донести? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2020, 19:56 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Док Саш, может ты мне вразумительно сможешь донести? Да и вообще в цикле так проверять и РМить при использовании потоков срамно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2020, 21:37 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам РМить при использовании потоков срамно. Вот это я никак в толк не возьму. Почему срамно-то? Если я не хочу модальное окно вешать, а хочу, скажем, чтобы результат работы доп. потока в мемо основного потока выводился? Есть ещё какой кошерный способ для таких случаев? Допустим, AV мы не боится, потому что поток создаём и прибиваем ручками в try..finally. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2020, 17:19 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Док> чтобы результат работы доп. потока в мемо основного потока выводился? Какой результат работы, если он тупо висит на Open, там никаких прогресс-баров быть не может, максимум - анимашка. > Есть ещё какой кошерный способ для таких случаев? Каких "таких"? Если дождаться конца фонового выполнения и создаётся/завершается/уничтожается корректно и вручную и не хочется возиться с сообщениями и т.д. - вполне достаточно дождаться OnTerminate, это будет корректно. Чем будет в это время заниматься главный поток - без никаких циклов - личное дело пользователя (который может захотеть ещё что-нибудь запустить/понажимать) и разработчика, если нужно пользователя ограничить (не дать запустить фоновое действие повторно, например). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2020, 20:22 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, ты опять по диагонали топик прочитал ;) Я уже написал, что в случае с кодом ТС я ошибся. А дальше пошел оффтоп. И мои вопросы к непосредственной теме уже имеют перпендикулярное отношение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2020, 07:13 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Док в твоем примере без PM интерфейс должен замереть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2020, 12:16 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Док в твоем примере без PM интерфейс должен замереть? без PM я даже до заголовка не успеваю дотянуться, сразу вылезает ShowMessage. А с PM все двигается корректно, единственное, окно закрыть не удается. Но мне кажется, что твой пример с нежелательностью PM надуман, ибо оно здесь и так нафиг не сдалось :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2020, 22:56 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Док без PM я даже до заголовка не успеваю дотянуться, сразу вылезает ShowMessage. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2020, 11:55 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, да, в этом случае ты формально прав - без PM гуй фризится насмерть. ИМХО, это просто архитектурно неправильное решение, а не потому PM плохой. Ладно, надоело спорить. Появятся аргументы, напишу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2020, 23:01 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, кстати, если твой пример немного переделать, то он вполне жизнеспособен Код: 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. ps. а вообще, я уже забыл, о чем мы спорили :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2020, 00:01 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Док, :) Спор был о том, что корректно или нет использовать Application.ProcessMesages Сама по себе эта функция не опасна, как и любой инструмент. Просто нужно правильно его использовать. Application.ProcessMesages "проталкивает" очередь сообщений. И если в этой очереди сообщений попадётся сообщение, которое инициирует запуск того же цикла (как привёл пример _Vasilisk_), то может случиться конфуз. :) В вашем примере вы флагом не даёте циклу начаться заново. И в данном случае нет ничего страшного в использовании Application.ProcessMesages. ЗЫ: А ТС свалил, так и не сказав, к чему он пришёл, сделал ли визуализацию или что-то ещё... )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2020, 08:49 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40006331&tid=2037926]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 245ms |
| total: | 378ms |

| 0 / 0 |
