|
|
|
Создание объекта с полем Thread с функцией Execute из текущего класса
|
|||
|---|---|---|---|
|
#18+
Доброго дня господа ! Первопричина темы - невозможно запустить Thread дважды без пересоздания объекта 1. a:=Thread.Create(....) 2. a.Resume 3. Поток нормально отработал 4. a.Resume запустить еще раз невозможно У меня на Create висят ряд функций, которые нежелательно выполнять многократно Если ошибаюсь в выводах прошу поправить/подсказать .... Как решение вижу создать класс у которого одно из полей будет Thread, но не знаю как присвоить/установить функцию Thread.Execute взяв ее из текущего класса Т.е. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Заранее благодарен ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2019, 11:36 |
|
||
|
Создание объекта с полем Thread с функцией Execute из текущего класса
|
|||
|---|---|---|---|
|
#18+
HOME_X, поток работает от начала execute до конца execute. соответственно, если нужно что бы один и тот же поток отрабатывал несколько раз какой-то код в execute нужно сделать цикл. другой вариант - создать несколько экземпляров TYourThread, смотря что нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2019, 13:02 |
|
||
|
Создание объекта с полем Thread с функцией Execute из текущего класса
|
|||
|---|---|---|---|
|
#18+
makhaon, Надо так - ввел параметры - отработал поток - ввел другие параметры - отработал тот же поток c введенными параметрами Цикл не подходит однозначно, сейчас я имею многократное пересоздание потоков Можете что-то сказать относительно поля Thread нового класса - как присвоить Execute ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2019, 13:42 |
|
||
|
Создание объекта с полем Thread с функцией Execute из текущего класса
|
|||
|---|---|---|---|
|
#18+
Вполне нормально создавать потоки заново. Это одна из основных задач ОС, так что потоки - относительно дешево. Дорогим может быть само создание класса потока, но и там нет ничего такого, чем программа не занимается непрерывно, и для оптимизации вполне подходят общепринятые методы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2019, 14:06 |
|
||
|
Создание объекта с полем Thread с функцией Execute из текущего класса
|
|||
|---|---|---|---|
|
#18+
Без понимания, что конкретно вы имели в виду, говоря про "ряд функций" в Create, подсказать ничего невозможно. Потому что сейчас мы имеем классику XYZ по GunSmoker )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2019, 14:08 |
|
||
|
Создание объекта с полем Thread с функцией Execute из текущего класса
|
|||
|---|---|---|---|
|
#18+
krapotkinБез понимания, что конкретно вы имели в виду, говоря про "ряд функций" в Create, подсказать ничего невозможно. Потому что сейчас мы имеем классику XYZ по GunSmoker )) Тут понимание такое что есть ряд операций, которые выполняются единоразово, и в их дублировании просто нет логического смысла(ну например настройка приложения по NLS стандартам и т.д.) Попытался сделать так - не знаю верно ли !!! Уточните господа гуру - верно ли ПРИСВОИЛ метод 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. 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. Так вроде все работает .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2019, 15:04 |
|
||
|
Создание объекта с полем Thread с функцией Execute из текущего класса
|
|||
|---|---|---|---|
|
#18+
HOME_XЦикл не подходит однозначно, сейчас я имею многократное пересоздание потоков Можете что-то сказать относительно поля Thread нового класса - как присвоить Execute ? Цикл отлично подходит - просто его надо правильно написать (примерный код): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Работает так: Устанавливаем WrkThread.TaskProc (или TaskProcObj) , далее WrkThread.WakeUpEvent.SetEvent - процедура, которую задали в TaskProc выполняется в потоке, поток выполняет заданное и возвращается в состояние ожидания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2019, 19:11 |
|
||
|
Создание объекта с полем Thread с функцией Execute из текущего класса
|
|||
|---|---|---|---|
|
#18+
HOME_X, Чуть ошибся в декларации: Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2019, 19:13 |
|
||
|
Создание объекта с полем Thread с функцией Execute из текущего класса
|
|||
|---|---|---|---|
|
#18+
Вам нужен поток, чтобы в нем делать определенные вещи - постоянно или продолжительно долго.. Или вам время от времени надо выполнять асинхронные задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2019, 21:36 |
|
||
|
Создание объекта с полем Thread с функцией Execute из текущего класса
|
|||
|---|---|---|---|
|
#18+
x1ca4064HOME_X, Чуть ошибся в декларации: Код: sql 1. 2. 3. Чуток подправил - неопределенный класс первичного кода (TAddSpan = class;) совсем не к месту, просто ссылка на метод объекта Код: 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. Цикл не нужен ...запуск потока эпизодический, по требованию пользователя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2019, 21:54 |
|
||
|
Создание объекта с полем Thread с функцией Execute из текущего класса
|
|||
|---|---|---|---|
|
#18+
X-CiteВам нужен поток, чтобы в нем делать определенные вещи - постоянно или продолжительно долго.. Или вам время от времени надо выполнять асинхронные задачи? Спасибо за участие - вроде догадался как сделать ...(пример кода приведен) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2019, 21:56 |
|
||
|
Создание объекта с полем Thread с функцией Execute из текущего класса
|
|||
|---|---|---|---|
|
#18+
HOME_XX-CiteВам нужен поток, чтобы в нем делать определенные вещи - постоянно или продолжительно долго.. Или вам время от времени надо выполнять асинхронные задачи? Спасибо за участие - вроде догадался как сделать ...(пример кода приведен) не думаю... Если время от времени надо выполнять асинхронные задачи то зачем вам TThread, если есть удобный TTask, который идеально решает такие задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2019, 00:02 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=58&tid=2039294]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
149ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 439ms |

| 0 / 0 |
