powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Шаблон класса для работы с потоком (WThread, Thread)
25 сообщений из 469, страница 15 из 19
Шаблон класса для работы с потоком (WThread, Thread)
    #39330018
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gssboxДа спора нет, просто поделился информацией. Я на Lazarus только начал работать и у него есть свои не очевидные для меня нюансы.
Меня давно уже посещала мысль, что вместо warn нужно сделать некомпилируемую конструкцию.
Чтоб сразу (и хотя-бы раз) бросалась в глаза. :)
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39330123
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanЭто появилось ровно на этой странице.
Выше описано.
Точно. Это ты меня красивыми картинками от сути отвлек ;)
wadmanNewString/FreeString?
вот шайтан-малай, откуда знал, а?

зы. когда перелез на Лазарь, дал себе зарок: минимум сторонних компонентов, все ручками. В искушение вводишь

зыы. спасибо за труды. Дельная вещь. Пора на лазарныхевых форумах об этом компоненте трубить...
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39330148
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докзы. когда перелез на Лазарь, дал себе зарок: минимум сторонних компонентов, все ручками. В искушение вводишь

зыы. спасибо за труды. Дельная вещь. Пора на лазарныхевых форумах об этом компоненте трубить...
Для лазаря что бесплатно, то всё родное. :)

ЗЫ, всегда пожалуйста.
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39330825
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док, тыж вроде на 1.7 сидишь? Вот поддержка 1.7 :)
П.С. И теперь не нужно править файл проекта на предмет Define UseCThreads под *никсами. "Само".
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39331020
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gssboxДа спора нет, просто поделился информацией. Я на Lazarus только начал работать и у него есть свои не очевидные для меня нюансы.

везде свои особенности. то, что ты пишешь - есть в faq по лазарусу.
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39331030
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaongssboxДа спора нет, просто поделился информацией. Я на Lazarus только начал работать и у него есть свои не очевидные для меня нюансы.

везде свои особенности. то, что ты пишешь - есть в faq по лазарусу.
В принципе он верно поступил описав свой опыт
Хотя теперь в этом уже нет необходимости. "Само" делается. :)
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39331801
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Говорят, выкладывать вечером в пятницу обновление - плохая примета.
Заметил, что processorCount в никсах всегда возвращает 1. Поправил.
Добавил возможность отправки своего сообщения из потока.
Ну и редактор тасков довел до ума.
Демка прилагается.
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39333361
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавил общий параметр ко всем задачам (TWCThread.Param) и метод для ожидания не аварийного завершения задач (TWCThread.WaitAllTasks).
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39334416
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Убрал мемлик, перекроил код, убрал весьма досадную ошибку, прикрутил пару демок (в т.ч. и обновлялку в два потока и фоновое формирование lazReport).
Кажется, уже можно серьезно пользоваться. :)
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39334906
Фотография brick08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,
Из за строки
Код: pascal
1.
THandle             = ;   


в модулях где указан wthread и используя переменную с типом THandle, думаешь, что это будет System.THandle, а на самом деле TEventHandle. Думаю, нужно поправить.
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39334907
Фотография brick08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
brick08Из за строки
Код: pascal
1.
2.
3.
    {$IFNDEF WINCE}
    THandle             = TEventHandle;
    {$ENDIF} 
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39334982
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
brick08Думаю, нужно поправить.
Согласен.
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39364995
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В связи с новой темой про потоки вспомнилось, что и я чего-то допилил за это время.
Но не помню что. Факт в том, что фоновые работы (печать, работа с БД и т.п.) теперь переделал на компонент wcthread.
И это работает. :)
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39391374
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробовал вашу библиотечку, таски подергал

правильно я понимаю что таски выполняются последовательно и сам тред после того как таск закончил свою работу не убивается а висит в памяти и ждет возможного повторного запуска?
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39391451
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
энди,

всё верно.
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39391523
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну в принципе никакой трагедии я не вижу, тред все равно создается при первом запуске, т.е даже если в программе вагон тасков то в пуле будут только те которые запускались хоть раз. Вот думаю не замирить ли как-нибудь таски с экшенами, все же для дельфи это более родное понятие, да и зачастую весь функционал программы разбит именно на экшены, а так получится 2 дублирующих списка, список экшенов в каждом из которых фактически запуск таска. Наблюдается некоторая избыточность.
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39391542
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
энди,

нет никакого пула. Таск - это компонент-обертка над сообщением потоку.
Запускаешь таск - по сути отправляешь сообщение потоку.
Обработка сообщения (таска) идет в контексте доп.потока.
При чем тут экшены, ума не приложу. :)
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39391774
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну пулом я это назвал из соображений того что тред не убивается а остается в памяти для последующих запусков :)

А про экшены я это сказал к тому что в принципе стандартная программа это посути набор TAction, прибитых к тулбарам, меню и прочему. При переделке такой программы на таски посути каждый TAction будет преставлять собой одну строчку c вызовом таска. А в описании формы будет двойной список из TAction и TTask с практически идентичными именами и фактически завязанных друг на друга. Вот я и подумал не нарисовать ли наследника на TActionList с возможностью назначения TTask для запуска. Если не назначен то работает стандартный функционал, а если назначен то просто идет его запуск и не надо прописывать OnExecute.
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39391911
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эндиВот я и подумал не нарисовать ли наследника на TActionList с возможностью назначения TTask для запуска. Если не назначен то работает стандартный функционал, а если назначен то просто идет его запуск и не надо прописывать OnExecute.
Если я верно понял, то не дергай сам Execute у таска, иначе это будет не многопоточка.
Чтобы задача отработала в другом потоке, таск нужно запускать только через Start.
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39391959
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да про start у таска я уже вчера понял, я имел ввиду Execute у TAction
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39392324
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то у меня не получилось нормально поймать exception райзнутый в таске, они где-то глушатся и не рерайзятся при завершении работы таска с ошибкой?
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39392331
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эндиони где-то глушатся и не рерайзятся при завершении работы таска с ошибкой?
Конечно. Лови сам и передавай в vcl через TTask.PostMessage -> OnMessage.
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39392345
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ок, завтра поэкспериментирую
но спасибо за приятную обертку :)
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39392352
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эндино спасибо за приятную обертку :)
Не за что. :)
...
Рейтинг: 0 / 0
Шаблон класса для работы с потоком (WThread, Thread)
    #39393898
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот тут что подумал, а может имеет смысл передавать exception пойманный в потоке не через messages, а в finish самого потока, тогда не надо перехватывать сообщения. Да и получится чуток логичнее, поток все равно завершился, но только с exception<>nil.
...
Рейтинг: 0 / 0
25 сообщений из 469, страница 15 из 19
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Шаблон класса для работы с потоком (WThread, Thread)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]