|
|
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. У меня следующий вопрос. Как мне запускать поток каждые <опредмеченное время в секундах>? Я создал класс потока Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. все методы реализовал, теперь сам поток вызываю через компонент TTimer , используя метод OnTimer: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Теперь через определенное время, срабатывает таймер и выполняется OnTimer, в это время происходит подвисание основной программы. У меня вопрос как сделать так, что поток не мешал основной программе, ну то есть чтоб она не подвисала? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2019, 22:46 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
LMagкак сделать так, что поток не мешал основной программе, ну то есть чтоб она не подвисала? Написать его правильно. Граблей для новичка на этом пути немерено. От огульного использования Synchronize до сериализации вызовов Firebird API в пределах одного коннекта клиентской библиотекой. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2019, 23:00 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Я понимаю что надо писать правильно, но как или дайте ссылку метод execute я реализовал так Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2019, 23:03 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
LMagметод execute я реализовал так Ну да, худший сценарий, типичная ошибка. Человек, написавший этот неправильный код давно умер, но дело его живёт. Synchronize надо использовать очень осторожно. Читай штатную справку. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2019, 23:06 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
LMag Я понимаю что надо писать правильно, но как или дайте ссылку метод execute я реализовал так Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2019, 23:21 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
А как тогда переписать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2019, 23:52 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
LMag, А что делает доп.поток? Какие-то циклические действия? Если так, то можно использовать эвенты. По таймеру взводить и сбрасывать эвент, который будет соответственно замораживать/размораживать доп.поток ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2019, 00:22 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Док, Ну поток опрашивает базу на количество введеных записей тем или иным оператором. Хотел бы узнать как отдельным эвентом останавливать и запускать поток? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2019, 00:27 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
LMag Ну поток опрашивает базу на количество введеных записей тем или иным оператором. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2019, 00:34 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Ещё есть Application.OnIdle....но это, наверное, хуже... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2019, 00:35 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
А как запускать и останавливать поток в таймере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2019, 00:46 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
LMag А как запускать и останавливать поток в таймере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2019, 00:58 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
LMagА как запускать и останавливать поток в таймере? Никак. Поток запускается один раз и работает сам собой. Нечего делать - спит. А опрашивать базу таким образом - плохая идея номер два. Если тебе надо оперативное оповещение о действиях оператора - или используй POST_EVENT или организуй доставку извещений мимо базу. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2019, 01:17 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Квейд LMag Я понимаю что надо писать правильно, но как или дайте ссылку метод execute я реализовал так Код: pascal 1. 2. 3. 4. 5. Просто вызов в основном потоке отработал бы намного быстрее, и без граблей. Хотя зачем я это пишу, скорей всего ТС - пятничный тролль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2019, 02:54 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Даю подсказку: сначала следует проверять, не увеличилось ли последнее значение генератора с помощью Select gen_id(genname, 0) from rdb$database И если изменилось, тогда будет смысл пересчитывать количество записей. При этом следует также контролировать наличие последней записи по значению генератора. В нашем колхозе так делают :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2019, 08:28 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Это работает, если записи не удаляются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2019, 08:30 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
LMag Ну поток опрашивает базу на количество введеных записей тем или иным оператором. Хотел бы узнать как отдельным эвентом останавливать и запускать поток? можешь почитать тут https://www.transl-gunsmoker.ru/2009/04/blog-post_17.html?m=1 http://forum.ixbt.com/topic.cgi?id=26:38680 http://www.interface.ru/home.asp?artId=6105 Я как-то игрался в эвентами, простейший тестовый проект прилагаю. Но он под Лазарь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2019, 21:00 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
А почему бы не использовать готовый функционал windows: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. Используем так: Код: pascal 1. 2. 3. 4. 5. 6. 7. Сигнализацию о завершении и доставку результатов в вызывающий поток добавить по вкусу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2019, 23:26 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Barmaley57, ".... котикоф? Да вы просто не умеете их готовить!" "" Вы должны быть внимательными при использовании функции SleepEx и кода, который прямо или косвенно создает окно. Если поток создает какие-либо окна, он должен обрабатывать сообщения. Циркулярное сообщение отправляется всем окнам в системе. Если Вы имеете поток, который использует функцию SleepEx с бесконечной задержкой, система зайдет в тупик. Два примера кода, которые косвенно создают окна - это динамический обмен данными (DDE) и модель многокомпонентных объектов (COM) CoInitialize. Поэтому, если Вы имеете поток, который создает окна, используйте MsgWaitForMultipleObjects или MsgWaitForMultipleObjectsEx, а не SleepEx. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2019, 00:18 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Bred eFeM, как это относится к данной теме? С дуру то можно и х... сломать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2019, 12:55 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Barmaley57, не учите людей плохому. Если "готовый функционал windows", то это CreateThread. Вот и покажите пример с его применением для Delphi и c сообщениями/событиями для взаимодействия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2019, 17:10 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Я перенес код работы с бд в метод execute Код: 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. Теперь у меня программа при выполнения данного потока зависает... убираю FQuery, программа нормально работает... В чем проблема? Отдельно проверил вне потока, выполняется нормально... А когда в потоке , программа виснет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 00:09 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
1. Попробуйте создавать в потоке отдельное подключение к БД. В идеале использовать пул подключений. 2. Используйте конструкцию try..finally, удаляйте объекты в разделе finally. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 00:38 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Так же в начале поставил while not Terminated do Без этой строки программа зависала, как только запускался поток И еще пытаюсь вывести в потоке сообщение типа Код: pascal 1. ничего не выходит.... Что я делаю не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 01:03 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
авторЧто я делаю не так? Зря связались с дополнительным потоком. Это не тот случай, когда можно обойтись без предварительного изучения материала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 06:36 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Кстати, гугл на первой странице поиска по запросу "delphi tthread" выдаёт один треш. Не удивительно, что у новичков такие проблемы с этой темой :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 08:51 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Что именно не так делаю, не могли бы посказать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 08:55 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
LMag, 1) Создавайте в потоке не только TpFIBQuery и TpFIBTransaction, но и TpFIBDatabase. 2) Не используйте ShowMessage в потоке. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 09:54 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
goldmi45, Спасибо Вам , сейчас попробую... сделать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 10:01 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Bred eFeM не учите Ни в коем разе! Это вообще занятие неблагодарное)) Bred eFeMплохому Где написано, что это плохо? Bred eFeMЕсли "готовый функционал windows", то это CreateThread. Вот и покажите пример с его применением для Delphi и c сообщениями/событиями для взаимодействия.Зачем? Для чего городить огород на ровном месте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 10:55 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
LMag Теперь у меня программа при выполнения данного потока зависает... убираю FQuery, программа нормально работает... Dimitry Sibiryakov до сериализации вызовов Firebird API в пределах одного коннекта клиентской библиотекой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 10:59 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#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. Только программу не закрывайте, пока доп. поток работает, иначе AV ловить будете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 11:53 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
DmSer Код: pascal 1. 2. 3. 4. Код: sql 1. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 16:15 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
DmSer, Что вы имеете ввиду под дополнительным потоком? Основную программу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 16:29 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ А не проще выполнить Код: sql 1. ? Тут что угодно может быть. Не суть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 17:29 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Т.к. процедура коннекта может быть длительной, поток лучше запустить 1 раз и управлять им через события, 0 - запрос кол-ва, 1 - закрытие приложения, так же запрос будет выполнятся по таймауту, это вместо таймера. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 17:41 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
vvvait Код: pascal 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 17:54 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Т.к. процедура коннекта может быть длительной, поток лучше запустить 1 раз и управлять им через события, 0 - запрос кол-ва, 1 - закрытие приложения, так же запрос будет выполнятся по таймауту, это вместо таймера. Ради бога, ну какие события? У автора не работают самые элементарные вещи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2019, 18:47 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
DmSer Кстати, гугл на первой странице поиска по запросу "delphi tthread" выдаёт один треш. Не удивительно, что у новичков такие проблемы с этой темой :) Огромная статья по многопоточному программированию в Delphi. Материал оформлен очень грамотно. Жаль только, что старый (от 2000г). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 00:17 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
DmSer DmSer Кстати, гугл на первой странице поиска по запросу "delphi tthread" выдаёт один треш. Не удивительно, что у новичков такие проблемы с этой темой :) Огромная статья по многопоточному программированию в Delphi. Материал оформлен очень грамотно. Жаль только, что старый (от 2000г). ИМХО, лучше прочитать того же Пачеко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 11:30 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Какой-то ацкий винегрет!!! ИМХО, лучше прочитать того же Пачеко. Предлагаете советовать новичкам книгу, которая не продаётся уже 10-15 лет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 13:02 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
DmSer Какой-то ацкий винегрет!!! ИМХО, лучше прочитать того же Пачеко. Предлагаете советовать новичкам книгу, которая не продаётся уже 10-15 лет?За это время в работе потоков ничего фундаментального не поменялось. В книге хорошо подан материал. Не вижу проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 13:16 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Можно до кучи еще и Рихтера добавить. Но, я так понимаю, у молодёжи сейчас чтение книг не в моде... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 13:18 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Barmaley57 Предлагаете советовать новичкам книгу, которая не продаётся уже 10-15 лет? Где её брать? Качать с торрентов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 13:33 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Barmaley57 Но, я так понимаю, у молодёжи сейчас чтение книг не в моде... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 13:40 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
DmSer Barmaley57 пропущено... За это время в работе потоков ничего фундаментального не поменялось. В книге хорошо подан материал. Не вижу проблем. Где её брать? Качать с торрентов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 13:58 |
|
||
|
Поток и timer
|
|||
|---|---|---|---|
|
#18+
Barmaley57 Можно до кучи еще и Рихтера добавить. Но, я так понимаю, у молодёжи сейчас чтение книг не в моде... организовать вебинар и с выражением читать Рихтера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2019, 14:08 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2038817]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
186ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
103ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 571ms |

| 0 / 0 |
