|
|
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. База данных: Firebird 2.5 Fib Plus Dataset через стандартный DataSource связан с ДБГридом. Имеется sql-запрос, который выполняется около 5 секунд. Хочется, чтобы на время выполнения запроса progressbar неопределенно играл полоской. У FibDataSet есть события BeforeOpen и AfterOpen. Используя их почему-то progressbar не реагирует на начало выполнения запроса. Реакция только по окончанию запроса (после того как данные отобразятся в DBGrid). Аналогично, когда прописываешь какие-то действия до строчки FIBDataset.Open, действия начинают происходить только по окончанию запроса. Подскажите в каком направлении двигаться, чтобы реализовать подобную функцию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2020, 10:17 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Оптимизация запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2020, 10:21 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
24.09.2020 10:17, Explosion пишет: > Подскажите в каком направлении двигаться, чтобы реализовать подобную функцию? в сторону потоков. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2020, 11:31 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Событие BeforeOpen Fib Dataset срабатывает до начала выполнения запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2020, 11:48 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
24.09.2020 11:48, Explosion пишет: > Событие BeforeOpen Fib Dataset срабатывает до начала выполнения запроса? ну а? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2020, 11:49 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий ну а? как бы это самое, ну ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2020, 12:27 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
24.09.2020 12:27, Explosion пишет: > как бы это самое, ну ну дык! Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2020, 12:44 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Как вариант вызовите ему Repaint. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2020, 13:43 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
А у FibDataset нету event`a OnFetchRow() ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2020, 14:50 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
DarkMaster А у FibDataset нету event`a OnFetchRow() ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2020, 14:55 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Ну и пусть себе рисует/апдейтит скроллбар свой на каждом 100м фетче... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2020, 15:11 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
24.09.2020 15:11, DarkMaster пишет: > Ну и пусть себе рисует/апдейтит скроллбар свой на каждом 100м фетче... у него ПЕРВЫЙ фетч только через 100500 секунд. а последующие - быстро. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2020, 15:13 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
DarkMaster _Vasilisk_, Ну и пусть себе рисует/апдейтит скроллбар свой на каждом 100м фетче... Хватило бы, чтобы состояние прогресс бара было в режиме неопредённости. Поэтому достаточно было бы, чтобы вы подсказали точку начала действия и точку конца. OnFetchRow() не нашёл. У запроса мало строк (группировка), поэтому толку в Fetch'ивании нет в данном случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2020, 06:45 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Explosion, А если в BeforeOpen, после включения прогрессбара, вставить богомерзкий Application.ProcessMessages?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2020, 09:18 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Explosion DarkMaster _Vasilisk_, Ну и пусть себе рисует/апдейтит скроллбар свой на каждом 100м фетче... Хватило бы, чтобы состояние прогресс бара было в режиме неопредённости. Поэтому достаточно было бы, чтобы вы подсказали точку начала действия и точку конца. OnFetchRow() не нашёл. У запроса мало строк (группировка), поэтому толку в Fetch'ивании нет в данном случае. Запрос выполняется синхронно, то есть приложение будет "заморожено" до тех пор, пока сервер БД не пришлет ответ. Если хочешь "шевеления" в процессе ожидания - используй нити, тебе сразу написали об этом. Выноси в отдельную нить либо запрос, либо отображение картинки, другого пути нет. С использованием TpFibDataSet как источника данных грида, в отдельную нить, скорее всего, придется выносить картинку.Ибо "стандартные" компоненты не предусматривают асинхронную работу. Или все придется делать руками, используя свой датасет, асинхронно взаимодействуюший с нитью загрузки данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2020, 10:13 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
alekcvp Explosion, А если в BeforeOpen, после включения прогрессбара, вставить богомерзкий Application.ProcessMessages?.. Если вставить в BeforeOpen - не работает, если вставить перед строчкой кода dataset.open, то на долю секунды "размораживает" приложение и полоска прогрессбара чуть сдвигается и вновь "замерзает". ъъъъъ Explosion пропущено... Хватило бы, чтобы состояние прогресс бара было в режиме неопредённости. Поэтому достаточно было бы, чтобы вы подсказали точку начала действия и точку конца. OnFetchRow() не нашёл. У запроса мало строк (группировка), поэтому толку в Fetch'ивании нет в данном случае. Запрос выполняется синхронно, то есть приложение будет "заморожено" до тех пор, пока сервер БД не пришлет ответ. Если хочешь "шевеления" в процессе ожидания - используй нити, тебе сразу написали об этом. Выноси в отдельную нить либо запрос, либо отображение картинки, другого пути нет. С использованием TpFibDataSet как источника данных грида, в отдельную нить, скорее всего, придется выносить картинку.Ибо "стандартные" компоненты не предусматривают асинхронную работу. Или все придется делать руками, используя свой датасет, асинхронно взаимодействуюший с нитью загрузки данных. К сожалению не догадываюсь что такое "нити", но правильно ли всё понял: в догонку к sql-запросу из датасета параллельной транзакцией запускаем запрос-близнец через, например, query-компонент и по нему ориентируем анимацию прогресс бара? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2020, 15:36 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Печаль. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2020, 15:49 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Извиняюсь. Загуглил и понял, что речь о Thread. Мимопроходящий в сторону потоков. Теперь понятно про что речь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2020, 16:03 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Создал для полоски прогрессбара отдельный поток, но проблема сохранилась. Во время выполнения запроса форма "замораживается". На модуле формы располагается dataset, кнопка и progressbar: Код: 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. Как думаете, проблема в этом: ъъъъъ отдельную нить, скорее всего, придется выносить картинку.Ибо "стандартные" компоненты не предусматривают асинхронную работу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2020, 13:39 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
В Execute() надо выносить всю работу с БД, а не настройку прогрессбара... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2020, 13:49 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Explosion, имхо, в поток выносить открытие датасета (что проще), если он позволяет (не работал с ним), или окно прогресса, но! целиком на WinApi. делал такое для возможности отмены запроса в SDAC типа такого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2020, 14:00 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Explosion, вы это ( 22203248 ) делали? Думается, что вам проще оптимизировать запрос, чем понять, как сделать индикацию выполнения запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2020, 14:16 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Explosion, ну ты сам подумай: чтобы прогрессбар шевелился, его кто-то должен "толкать". Кто у тебя его толкать будет, если основная нить ожидает завершения запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2020, 14:41 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Explosion, делай так: вывешивай модальное окно с анимацией и кнопкой " Отмена". В параллельной нити - коннект к базе, ожидание аыполнения запроса. По готовности клонируешь данные в контекст основной нити. При нажатии кнопки "Отмена" - посылаешь в нить работы с базой сообщение, там все независимо дождется завершения и терминируется. Но - тоже, зависон при работе с длинным запросом никуда не денется, или используй особые средства работы с ФБ доя прерывания запроса, либо жди завершения. Самое верное - оптимизировать запрос, рпзделить его, изменить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2020, 15:00 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
сделай так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. И не обращай внимания на окружающих, когда начнут ссаными тапками кидаться. Когда разберешься с другими способами оживить основной поток, код поправишь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2020, 23:26 |
|
||
|
Компонент 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 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
14.10.2020 23:01, Док пишет: > ИМХО, это просто архитектурно неправильное решение, а не потому PM плохой. то что ты пытаешься сделать, это т.н. "кооперативная многозадачность". при которой условные "потоки" делятся друг с другом процессорными ресурсами. ничего крамольного в этом конечно нет, но это жуткая архаика и атавизмЪ. так работали ОСи типа Фодос, Win(до 3.Х), MacOS-и(до System 7) и прочие, в эпоху до исторического материализЪма. сейчас так делать уже не комильфо. ибо практически все современные ОСи позволяют писать реальные многопоточные приложения. в кошерных концепциях Win-приложений принято выделять ГЛАВНЫЙ(master) поток, в котором крутится очередь обработки оконных сообщений (и соответственно отрисовка) и ПОДЧИНЁННЫЕ(slave) потоки, которые занимаются вычислениями, операциямы ввода-вывода и т.п. рисовать из slave-потока - ломать кошерную концепцию. ну примерно как жрать мацу с салом(свинячим). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2020, 12:09 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий сейчас так делать уже не комильфо. Да нет, по большому счету, это нечто вроде конструкции await. Косоватое, но при должной аккуратности безвредное. А аккуратность при обращении с потоками и так должна присутствовать. Ну и соответствующие методы, которые могут вызывать РМ, неплохо как-то по-особенному называть или комментировать, чтобы через год не наткнуться на грабли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2020, 14:34 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий рисовать из slave-потока - ломать кошерную концепцию. в очень ограниченных случаях это приходится делать, но в разумных пределах. Главное, чтобы работало без ошибок. А уж с какого конца разбивать яйцо - дело вкуса. зы. в этом 22211389 примере цикл вообще должен быть вынесен в доп.поток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2020, 15:07 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
Док кстати, если твой пример немного переделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2020, 15:37 |
|
||
|
Компонент FIB Plus Dataset
|
|||
|---|---|---|---|
|
#18+
15.10.2020 15:37, _Vasilisk_ пишет: > Да. О том и речь, что нужно понимать, когда стреляешь в ногу. непременно нужно озаботиться анестезией. превентивно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2020, 15:40 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2037926]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
115ms |
get topic data: |
8ms |
get forum data: |
4ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 424ms |

| 0 / 0 |
