|
|
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
gssboxДа спора нет, просто поделился информацией. Я на Lazarus только начал работать и у него есть свои не очевидные для меня нюансы. Меня давно уже посещала мысль, что вместо warn нужно сделать некомпилируемую конструкцию. Чтоб сразу (и хотя-бы раз) бросалась в глаза. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 16:42 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
wadmanЭто появилось ровно на этой странице. Выше описано. Точно. Это ты меня красивыми картинками от сути отвлек ;) wadmanNewString/FreeString? вот шайтан-малай, откуда знал, а? зы. когда перелез на Лазарь, дал себе зарок: минимум сторонних компонентов, все ручками. В искушение вводишь зыы. спасибо за труды. Дельная вещь. Пора на лазарныхевых форумах об этом компоненте трубить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 18:15 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
Докзы. когда перелез на Лазарь, дал себе зарок: минимум сторонних компонентов, все ручками. В искушение вводишь зыы. спасибо за труды. Дельная вещь. Пора на лазарныхевых форумах об этом компоненте трубить... Для лазаря что бесплатно, то всё родное. :) ЗЫ, всегда пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 19:27 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
Док, тыж вроде на 1.7 сидишь? Вот поддержка 1.7 :) П.С. И теперь не нужно править файл проекта на предмет Define UseCThreads под *никсами. "Само". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2016, 16:07 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
gssboxДа спора нет, просто поделился информацией. Я на Lazarus только начал работать и у него есть свои не очевидные для меня нюансы. везде свои особенности. то, что ты пишешь - есть в faq по лазарусу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2016, 19:32 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
makhaongssboxДа спора нет, просто поделился информацией. Я на Lazarus только начал работать и у него есть свои не очевидные для меня нюансы. везде свои особенности. то, что ты пишешь - есть в faq по лазарусу. В принципе он верно поступил описав свой опыт Хотя теперь в этом уже нет необходимости. "Само" делается. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2016, 19:40 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
Говорят, выкладывать вечером в пятницу обновление - плохая примета. Заметил, что processorCount в никсах всегда возвращает 1. Поправил. Добавил возможность отправки своего сообщения из потока. Ну и редактор тасков довел до ума. Демка прилагается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2016, 17:01 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
Добавил общий параметр ко всем задачам (TWCThread.Param) и метод для ожидания не аварийного завершения задач (TWCThread.WaitAllTasks). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 11:12 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
Убрал мемлик, перекроил код, убрал весьма досадную ошибку, прикрутил пару демок (в т.ч. и обновлялку в два потока и фоновое формирование lazReport). Кажется, уже можно серьезно пользоваться. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2016, 14:26 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
wadman, Из за строки Код: pascal 1. в модулях где указан wthread и используя переменную с типом THandle, думаешь, что это будет System.THandle, а на самом деле TEventHandle. Думаю, нужно поправить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2016, 05:06 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
brick08Из за строки Код: pascal 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2016, 05:09 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
brick08Думаю, нужно поправить. Согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2016, 09:52 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
В связи с новой темой про потоки вспомнилось, что и я чего-то допилил за это время. Но не помню что. Факт в том, что фоновые работы (печать, работа с БД и т.п.) теперь переделал на компонент wcthread. И это работает. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2016, 15:43 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
попробовал вашу библиотечку, таски подергал правильно я понимаю что таски выполняются последовательно и сам тред после того как таск закончил свою работу не убивается а висит в памяти и ждет возможного повторного запуска? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:24 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
энди, всё верно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 18:27 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
Ну в принципе никакой трагедии я не вижу, тред все равно создается при первом запуске, т.е даже если в программе вагон тасков то в пуле будут только те которые запускались хоть раз. Вот думаю не замирить ли как-нибудь таски с экшенами, все же для дельфи это более родное понятие, да и зачастую весь функционал программы разбит именно на экшены, а так получится 2 дублирующих списка, список экшенов в каждом из которых фактически запуск таска. Наблюдается некоторая избыточность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 19:20 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
энди, нет никакого пула. Таск - это компонент-обертка над сообщением потоку. Запускаешь таск - по сути отправляешь сообщение потоку. Обработка сообщения (таска) идет в контексте доп.потока. При чем тут экшены, ума не приложу. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 19:45 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
Ну пулом я это назвал из соображений того что тред не убивается а остается в памяти для последующих запусков :) А про экшены я это сказал к тому что в принципе стандартная программа это посути набор TAction, прибитых к тулбарам, меню и прочему. При переделке такой программы на таски посути каждый TAction будет преставлять собой одну строчку c вызовом таска. А в описании формы будет двойной список из TAction и TTask с практически идентичными именами и фактически завязанных друг на друга. Вот я и подумал не нарисовать ли наследника на TActionList с возможностью назначения TTask для запуска. Если не назначен то работает стандартный функционал, а если назначен то просто идет его запуск и не надо прописывать OnExecute. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 09:05 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
эндиВот я и подумал не нарисовать ли наследника на TActionList с возможностью назначения TTask для запуска. Если не назначен то работает стандартный функционал, а если назначен то просто идет его запуск и не надо прописывать OnExecute. Если я верно понял, то не дергай сам Execute у таска, иначе это будет не многопоточка. Чтобы задача отработала в другом потоке, таск нужно запускать только через Start. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 11:37 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
Да про start у таска я уже вчера понял, я имел ввиду Execute у TAction ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 12:16 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
Что-то у меня не получилось нормально поймать exception райзнутый в таске, они где-то глушатся и не рерайзятся при завершении работы таска с ошибкой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 17:17 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
эндиони где-то глушатся и не рерайзятся при завершении работы таска с ошибкой? Конечно. Лови сам и передавай в vcl через TTask.PostMessage -> OnMessage. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 17:20 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
ок, завтра поэкспериментирую но спасибо за приятную обертку :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 17:29 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
эндино спасибо за приятную обертку :) Не за что. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 17:35 |
|
||
|
Шаблон класса для работы с потоком (WThread, Thread)
|
|||
|---|---|---|---|
|
#18+
Я вот тут что подумал, а может имеет смысл передавать exception пойманный в потоке не через messages, а в finish самого потока, тогда не надо перехватывать сообщения. Да и получится чуток логичнее, поток все равно завершился, но только с exception<>nil. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2017, 23:20 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39334982&tid=2039179]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
187ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 543ms |

| 0 / 0 |
