Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Работа с потоками
|
|||
|---|---|---|---|
|
#18+
Приветствую Всех! Имеется программа, которая в какой-то момент времени выполняет долгие вычисления. И чтобы для юзера программа не казалась зависшей решил вывести отдельное окошко, в котором показывать процесс ну скажем ProgressBar-ом. В итоге пришел к созданию другого потока в котором производится визуальное отображение. К сожалению у меня ничего не вышло. С потоками работаю впервые. Поэтому набросал мелкий примерчик, который тоже не работает. Код: plaintext 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. Подскажите что не так. Вывод результата происходит после проведения вычислений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2003, 14:39 |
|
||
|
Работа с потоками
|
|||
|---|---|---|---|
|
#18+
В данном случае в потоке не знаю какой результат получится - вызвать Application.ProcessMessages в процедуре UP И тебе лучше не потоком делать - если конечно не запрос к базе и итераций много в вычислениях, а Application.ProcessMessages вызывать прямо в ходе вычислений. Но это если есть где, конечно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2003, 16:44 |
|
||
|
Работа с потоками
|
|||
|---|---|---|---|
|
#18+
А обновление не помогает? А-ля form1.edit1.repaint ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2003, 17:31 |
|
||
|
Работа с потоками
|
|||
|---|---|---|---|
|
#18+
Странно ты как-то делаешь... Первый поток создает второй, запускает его и уходит в вычисления. Второй каждые 200мс пытается заставить его что-то делать. Так ведь первый занят! Отработает свое, нарисует. Насколько я понял тебе надо все вычисления перенести во второй, а первый пусть с юзером общается, кнопочки, менюшечки, ну и прогресс отображает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 08:51 |
|
||
|
Работа с потоками
|
|||
|---|---|---|---|
|
#18+
2tygra Application.ProcessMessages действительно в этом примере помогает. Но как правильно замечено в реальной программе происходит обращение к базе с выполнением долгого запроса и выполнение других операций, так что это не совсем то что надо. 2SiDen Ваш вариант не работает 2Mich А как тогда быть если все вычисления и обращения к базе происходит в основном потоке программы. Для юзера происходит как бы зависание проги и надо хоть что-то вывести. А работать юзеру с меню, кнопками и т.д. в процессе вычислений нет необходимости и ненадо это ему. Этот пример халявный только для отработки технологии. 2All Может кто подскажет как производить вывод информации о процессе выполнения проги, если процесс долгий и не предсказуемый по времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2003, 03:02 |
|
||
|
Работа с потоками
|
|||
|---|---|---|---|
|
#18+
2All После некоторых экспериментов пришел к такому результату. Прошу высказаться по этому поводу. Как ни странно - работает. Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2003, 02:01 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=2068&tid=2119267]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
90ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 182ms |

| 0 / 0 |
