|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
Создаю SharedObject. В нём все мат. действия выполняются независимо от главного tread'a. То есть прога не виснет, когда я пускаю цикл на пару миллионов:) . Но как мне таким же образом запустить retrieve() у DW ? Чтоб он, тяжёленький, выполнялся, а программа не ждала его завершения? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 15:01 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
Можно попробовать использовать DataStore вместо DataWindow. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 16:54 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#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. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370.
Есть объект, который и будет потоком: Код: 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. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191.
Если внимательно почитаете код, то всё должно быть ясно... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2004, 22:05 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
А теперь вот такой вопрос: в самом SharedObject я создал DataStore , забил его данными, а как теперь мне эти данные передать в другую функцию? Понятно, что простой rowcopy сделать я не могу. Как тогда быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 11:30 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
MixА теперь вот такой вопрос: в самом SharedObject я создал DataStore , забил его данными, а как теперь мне эти данные передать в другую функцию? Понятно, что простой rowcopy сделать я не могу. Как тогда быть? GetFullState/SetFullState ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 12:08 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
Идея просто классная. Но вот проблема вылезла: у меня в SharedObject сидит переменная, которую мне необходимо передать наружу из SharedObject (предположим, как параметр функции). Но из этого объекта можно выполнить только TriggerEvent (по крайней мере я только этот способ использовал) Все другие, как то Event, функцию PB забраковал, говоря, что такой функции он не видит. Как можно всё-таки передать tyne переменную? Спасибо большое! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 13:30 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
авторА теперь вот такой вопрос: в самом SharedObject я создал DataStore , забил его данными, а как теперь мне эти данные передать в другую функцию? Через "коммуникационный объект", в котором тоже должен быть Data Store ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 14:01 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
А попобробнее можно о реализации? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 14:24 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
Mix , вы с какой-то специальной планеты, или тут над нами подтруниваете с вопросами типа А попобробнее можно о реализации? Я же вам ПОЛНУЮ реализацию постнул, с "коммуникационным объектом" и с GetFullState/SetFullState. Ипортните эти два объекта, всё что нужно сделать, это сделать что-нибудь в духе: 1) В вашем объекте ИЗ которого вы стартуете потоки задекларировать и заскриптать (тут вы будете вынимать FullState того, что ретривалось в отдельном потоке) событие ue_Multithread_complete /Parameters: Integer ai_ret_code String as_ret_message 2) В вашем объекте ИЗ которого вы стартуете потоки сделать instance переменные: Код: plaintext 1.
3) Там где вы делаете SharedObjectRegister/SharedObjectGet написать Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
4) В событии ue_Multithread_complete (которое по сути callback) вы уже получите ваш instance datastore c данными, ретривнутыми в другом потоке, типа: long ll_rows IF ai_ret_code = 1 AND Trim(as_ret_message) = "" THEN ll_rows = ids.RowCount() //делай что надо END IF Если нужны retrieval arguments, то в пунте 3) нужно объявить any lany_args[] Заполнить (<= 50) и позвать overloaded version inv_pass.of_init(lds, SQLCA, this, lany_args) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2004, 17:48 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
Не стал создавать новую тему, решил задать вопрос прямо здесь. Делаю то, что посоветовал Филипп в другом топике . Так вот, чего-то я не догоняю. А как, собственно, вырубить (прервать) долгий ретрив? Объекты svc_multithread_pass и svc_multithread подключил, поток создается, ретрив идет, а как прервать его - не понятно. Подскажите, убогому Э-э-э, только обьясните, пожалуйста, "на пальцАх", а то мы из дерЁвни, могЁм сразу и не понять ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2004, 10:56 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
Вооружаемся DBHandle() и, как всегда, www.google.ru ->группы-> строка для поиска "прервать запрос" находим там на первой страницк топик из su.dbms.mssql Читаем, думаем. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2004, 11:21 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
Нет, не думается сегодня мне что-то. Если ты об DBCancel() то я ее уже "щупал", ясно дело без SQLCA.DBParm = 'Async = 1' , ибо в OLEDB его как бы нет... Хотя все эксперименты провожу на MSS MS SQL Server 6.X . Ну я же сказал, что "на пальцах" обьяснить надо, иначе никак не пойму. И лучше всего обьяснение усвоится, когда оно будет использовать данные выше svc_multithread_pass и svc_multithread ... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2004, 11:51 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
авторНет, не думается сегодня мне что-то. Если ты об DBCancel() то я ее уже "щупал", ясно дело без SQLCA.DBParm = 'Async = 1', ибо в OLEDB его как бы нет... Хотя все эксперименты провожу на MSS MS SQL Server 6.X. Оригинально. Для того чтобы дергать методы OLEDB нужно и работать с OLEDB, по-моему это очевидно. С DBCancel() вообще проблем быть не должно. А как вызвать IComman::Cancel (наверное это то, что нужно) нужно подумать. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2004, 13:11 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
А ты не находишь, что этот код должен работать с разными Database Interfaces ? Хм-м-м, если он, конечно, работает... У нас при асинхронном режиме в MSS MS SQL Server 6.X как раз и используется связка SQLCA.DBParm = 'Async = 1' и DBCancel() и там все работает. Здесь же, если честно, я вообще не понимаю, как это может работать. Видимо, придется Филиппа ждать ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2004, 14:45 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
Кто-нибудь объясните на пальцах какие еще дополнительные обьекты необходимо создать и с какими методами чтобы создать доп поток. А то мне срочно надо. Заранее спасибо) Уж извините за такой тупую просьбу, но действительно надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2008, 12:12 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
inv_pass.of_init(lds, SQLCA, this) --- я никак не могу понять эту строчку, почему сам на себя обращается, и откуда локальный datastore ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2008, 13:37 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
и что такое "bla" и "bla-bla" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2008, 14:38 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
Black SavageА как, собственно, вырубить (прервать) долгий ретрив? Как вариант сделать disconnect транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2008, 09:51 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
_zubr13_и что такое "bla" и "bla-bla" :) Зря смеешься ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2008, 10:58 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
если тебе не понятно что здесь написано - не используй. если на пальцах про "потоки" в ПБ: отдельный поток появляется когда вызываешь ф-ю шаред обьекта методом POST пример допустим есть у тебя невизуальный обьект n_test с ф-цией of_multiply(x,y) чтобы вызвать ее в отдельном потоке: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Обьект, созданый через sharedobjectregister, создается в отдельном пространстве и не может доступаться к другим обьектам вашего основного приложения. Если мы хотим знать когда и как ф-я закончила выполнение, надо в конце этой ф-ции поставить вызов ф-ции или события из обьекта вашего основного приложения. Поэтому добавляем как параметр в ф-ю of_multiple невизуальный обьект-слушатель. Код: plaintext 1. 2. 3. 4. 5. 6.
http://www.sql.ru/forum/actualthread.aspx?tid=308028&hl=sharedobject ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2008, 12:22 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
хочу сделать retriev в отдельном потоке все отрабатывает только интерфейс замораживается во время выполнения помогите пожалуйста разобраться вот стартовый скрипт в объекте svc_multithread lnv_thread lnv_thread=create svc_multithread ids = CREATE datastore ids.dataobject = "dw_test" inv_pass = CREATE svc_multithread_pass inv_pass.of_init(ids, SQLCA, this) SharedObjectRegister ("ids","shared_ids" ) SharedObjectGet ( "shared_ids",lnv_thread) lnv_thread.post of_Execute(inv_pass) SharedObjectUnRegister ("shared_ids") спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2008, 18:26 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
сам разобрался все заработало спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 14:06 |
|
Вопрос по SharedObject
|
|||
---|---|---|---|
#18+
2Филипп Филипп, стабильно ли работают sharedobject в PB 10.2.1? почему то не всегда выполняется ue_multithread_complete подскажите, в чем может быть дело? Вот стартовый скрипт SharedObjectRegister ("svc_multithread","shared_thread" ) svc_multithread lnv_thread SharedObjectGet ( "shared_thread",lnv_thread) ids = CREATE datastore ids.dataobject = "dw_test" inv_pass = CREATE svc_multithread_pass inv_pass.of_init(ids, SQLCA, this) lnv_thread.post of_Execute(inv_pass) SharedObjectUnRegister ("shared_thread") спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2008, 18:23 |
|
|
start [/forum/topic.php?fid=15&msg=32675228&tid=1336459]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 240ms |
total: | 384ms |
0 / 0 |