|
|
|
Перевод асинхронного вызова в синхронный
|
|||
|---|---|---|---|
|
#18+
Приветствую! Необходимо выполнить метод одного объекта и дождаться его завершения. А это можно узнать только через событие. Код "ожидания" должен одинаково хорошо работать как в главном, так и в любом другом потоке приложения. Какие еще варианты предложите? Всё в одном потоке: и объект FCalculator, и вызывающий его TMyTask Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2018, 11:52 |
|
||
|
Перевод асинхронного вызова в синхронный
|
|||
|---|---|---|---|
|
#18+
Кроик Семён Код: pascal 1. 2. 3. 4. 5. Это зачем? Я-бы создал объект, который создает себе окно для ловли сообщения от самого себя и в нем-бы вызывал OnCalculated. Всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2018, 11:57 |
|
||
|
Перевод асинхронного вызова в синхронный
|
|||
|---|---|---|---|
|
#18+
wadman, не, ну с окном это слишком, плюс без того же цикла ожидания с ProcessMessages тоже будет не обойтись ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2018, 12:06 |
|
||
|
Перевод асинхронного вызова в синхронный
|
|||
|---|---|---|---|
|
#18+
Кроик СемёнКакие еще варианты предложите? 1) Пересмотреть задачу чтобы избавиться от условия "в любом потоке". 2) Проанализировать исходники TCalculator, поскольку асинхронные методы нынче подразумевают создание потока и тут надо очень тщательно смотреть как вызывается OnCalculated. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2018, 12:10 |
|
||
|
Перевод асинхронного вызова в синхронный
|
|||
|---|---|---|---|
|
#18+
Кроик Семёнплюс без того же цикла ожидания с ProcessMessages тоже будет не обойтись Если это будет в одном потоке, то в этом нет необходимости (читай, бесполезно). Если в другом, то это еще и вредно. Запустил поток, жди окончания в своем событии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2018, 12:22 |
|
||
|
Перевод асинхронного вызова в синхронный
|
|||
|---|---|---|---|
|
#18+
Нда, я все-таки ожидал, что есть неизвестное мне элегантное решение задачи в её изначальной постановке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2018, 19:48 |
|
||
|
Перевод асинхронного вызова в синхронный
|
|||
|---|---|---|---|
|
#18+
Кроик Семён, создаёшь событие (TEvent), устанавливаешь, ждёшь сброса. сброс делаешь в событии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2018, 20:02 |
|
||
|
Перевод асинхронного вызова в синхронный
|
|||
|---|---|---|---|
|
#18+
Кроик СемёнНда, я все-таки ожидал, что есть неизвестное мне элегантное решение задачи в её изначальной постановке. чёт я сегодня добрый посмотри реализацию обхода блокировки в TThread.WaitFor ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2018, 20:17 |
|
||
|
Перевод асинхронного вызова в синхронный
|
|||
|---|---|---|---|
|
#18+
makhaonсоздаёшь событие (TEvent), устанавливаешь, ждёшь сброса. сброс делаешь в событии? Я не проверял (хотя это была самая первая мысль), но по идеи, раз поток будет остановлен на точке Event.WaitFor, то я думал до события никогда и не дойдет. Я о случае с бесконечным ожиданием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2018, 20:41 |
|
||
|
Перевод асинхронного вызова в синхронный
|
|||
|---|---|---|---|
|
#18+
Кроик Семён...раз поток будет остановлен на точке Event.WaitFor, то я думал до события никогда и не дойдет... Да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2018, 20:55 |
|
||
|
Перевод асинхронного вызова в синхронный
|
|||
|---|---|---|---|
|
#18+
Кроик Семён, если есть возможность поток просто подождать, то WaitFor вполне достаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2018, 00:16 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39654778&tid=2040803]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
179ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 222ms |
| total: | 510ms |

| 0 / 0 |
