Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
To Flex2 (fll+thread)
|
|||
|---|---|---|---|
|
#18+
В общем случае задача вызова из функции FLL асинхронной функции (потоковая функция, в нашем случае thread) не решается. Например, Код: plaintext 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. Проблема заключается в TLS (thread local storage), которые (их три при обмене с фоксом) при порождении потока (thread) вовсе не инициализированы (то есть некому настраивать TlsSetValue). А все функции winapims.lib (_PutXXX, _SetXXX) явно или косвенно работают с TLS (TlsGetValue) и получают 0, что и приводит к ошибке общей защиты. Что можно сделать? Попробовать разобраться в том что делает DispatchAPI (это та функция которая и запускает наши FLL функции) из winapims.lib и симитировать его работу по настройке контекста вызова в самом thread-e. Меня на имитацию не хватило:( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 14:29 |
|
||
|
To Flex2 (fll+thread)
|
|||
|---|---|---|---|
|
#18+
Спасибо Анатолий! У меня такой код отрабатывает. Мало того, из потока я добился выполнения методов посредсвом _Execute() и присвоение значение в глобальнве переменные используя _FindVar и _Store. Не работает только исключительно _SetObjectProperty() причем ev_type cтрукутры объекта явно указывает что это объект. Спасибо за совет, попробую поиграть с TLS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 15:42 |
|
||
|
To Flex2 (fll+thread)
|
|||
|---|---|---|---|
|
#18+
А на какой операционной системе вы тестируете? В w2k sp3 вылетает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 15:51 |
|
||
|
To Flex2 (fll+thread)
|
|||
|---|---|---|---|
|
#18+
А не проще написать СОМ- объект и в нем запускать нужный поток?... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 15:58 |
|
||
|
To Flex2 (fll+thread)
|
|||
|---|---|---|---|
|
#18+
98 - отрабатывает NT 4.0 - отрабатывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 15:59 |
|
||
|
To Flex2 (fll+thread)
|
|||
|---|---|---|---|
|
#18+
2 Flex2 Ни 98, ни NT4.0 не поддерживает потоки. Как вам повезло-то, а!:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 16:04 |
|
||
|
To Flex2 (fll+thread)
|
|||
|---|---|---|---|
|
#18+
У вас, по моему, некорректное завершение потока "return 0;" тут не отделаешься, нужно "_endthreadex( 0 );" А еще лучше получить код завершения "GetExitCodeThread()". И подпирая код WaitForSingleObject функцией ожидания объекта ядра - собития бесконечно INFINITE вы грозитесь повесить систему вызовом этой функции из приложения Visual Foxpro. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 16:08 |
|
||
|
To Flex2 (fll+thread)
|
|||
|---|---|---|---|
|
#18+
Не поддерживаются фиберы :) Потоки поддерживаются. Хотя в NT поддерживаются и они. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 16:09 |
|
||
|
To Flex2 (fll+thread)
|
|||
|---|---|---|---|
|
#18+
ТО Crip Ссылочку не дадите, где можно посмотреть как это делать ? Или в кратце просвятите как считаете нужным ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 16:11 |
|
||
|
To Flex2 (fll+thread)
|
|||
|---|---|---|---|
|
#18+
Да, наверное, я поспешил с заявлением о поддержке. Но >У вас, по моему, некорректное завершение потока "return 0;" тут не отделаешься, нужно "_endthreadex( 0 );" не, это не обязательно >А еще лучше получить код завершения "GetExitCodeThread()". мой return 0 как раз и является тем GetExitCodeThread() >И подпирая код WaitForSingleObject функцией ожидания объекта ядра - собития бесконечно INFINITE вы грозитесь повесить систему вызовом этой функции из приложения Visual Foxpro. Это нужно мне было для отладки. А повесить систему - это врядли - это только, если thread никогда не завершится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 16:18 |
|
||
|
To Flex2 (fll+thread)
|
|||
|---|---|---|---|
|
#18+
Согласен. Только это не решает проблему. А проблема-то интересная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 16:24 |
|
||
|
To Flex2 (fll+thread)
|
|||
|---|---|---|---|
|
#18+
2Flex2 Как писать COМ объекты на С++? Неплохо здесь http://www.firststeps.ru/mfc/activex/activex1.html И здесь: http://clubpro.spb.ru/cominside/ Потоки там создаются аналогичным образом. С фоксом я работаю импортируя библиотеку типов _Vfp.Application . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 16:28 |
|
||
|
To Flex2 (fll+thread)
|
|||
|---|---|---|---|
|
#18+
Я уже сказал, что нужно сделать для "решения" проблемы, а именно - разобраться с тем, что происходит в следующем коде. Основной недостаток этого "решения", что в привязке к конкретной версии фокса и операционной системы. А так, если есть желание, то "вперед, на шпалы":): Код: plaintext 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. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 16:33 |
|
||
|
To Flex2 (fll+thread)
|
|||
|---|---|---|---|
|
#18+
То Crip Спасибо То anatoly_s Спасибо, но я не силен в ASM, да и время поджимает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 16:37 |
|
||
|
To Flex2 (fll+thread)
|
|||
|---|---|---|---|
|
#18+
Господа, где же выход ? Разбираться с технологие СOM - задача перешедшая в разряд потребности для любого программиста, но сразу как говорится "только кошки родятся", код с заданным функционалом в поставленное время написан не будет, если разбираться с этой технологией с "0". Изучать ASM - времени нет по определению. Я обречен на провал ? Или... ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 18:08 |
|
||
|
To Flex2 (fll+thread)
|
|||
|---|---|---|---|
|
#18+
Почему? Ведь если задуматься, то насколько вам необходимо использовать асинхронный вызов - реальный пример, пожалуйста, приведите. Все вами приведенные примеры не требовали асинхронности или я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 18:11 |
|
||
|
To Flex2 (fll+thread)
|
|||
|---|---|---|---|
|
#18+
Дело в том, что программулина по замыслу: 1. работат с COM - портами 2 на каждом порту 4 линии(абстракных, этаких "конверторов аналоговых сигналов с байтовую последовательность) и все это сыплется в порт на котром они сидят. 3. Необходимо добится максимальной параллельности работы портов, обработка байтовых последовательностей - фоновая. 4. в Foxe каждый порт как объект, отсуда и возникла проблема независимости собитий (дергания из потока метода объекта порта, допустим oPort(1).onRecive() Все "cемейство" объектов oPort - созданы на основе 1 класса с одиноковой функциональностью. 5. задумка была ничего не дергать, а сделать свойсво_Assign для хранения входящих данных и присваивать ему используя _SetObjectProperty то, что лезет в соответствующий буфер соответсвующего порта для соответсвующего ассоциированногго с портом объектом. Все работает - а вот с передачей параметров в объект , типа "ON-LINE", справиться наименьшей кровью не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 18:25 |
|
||
|
To Flex2 (fll+thread)
|
|||
|---|---|---|---|
|
#18+
Версий, как я понимаю, больше нет. Жаль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 15:18 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32246750&tid=1595792]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 429ms |

| 0 / 0 |
