|
|
|
Multithreading и WebService
|
|||
|---|---|---|---|
|
#18+
Добрый день Есть метод в Webservice, который отбирает данные из многих таблиц. Для ускорения процесса пытаюсь испольовать несколько потоков. Все запросы разделила на 3 группы: Select1; Select2; Select3. Теперь пытюсь вызывать каждый Select из нового потока. Использовала BackGroudWorker и ThreadPool. В результате первые несколько вызовов метода веб сервиса отрабатывают гораздо быстрее (с 1.1 секунды до 0,6-0,7 секунды), но начиная с какого-го то момента, все начинает тормозить. BackGroundWorker не входит в Completed, а ThreadPool продолжыеи ждать завершения. Что я делаю не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 05:01:11 |
|
||
|
Multithreading и WebService
|
|||
|---|---|---|---|
|
#18+
Если Вы хотите распараллелить сами сиквел запросы, используйте Asynchronous Processing самого соедиения . Asynchronous Processing Код: c# 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. Если Вы хотите распараллелить какую-то трудоемкую операцию, курите Parallel, PLinq или Task. BackGroudWorker и ручные ковыряния в тред пуле - выбросьте в мусорку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 12:12:52 |
|
||
|
Multithreading и WebService
|
|||
|---|---|---|---|
|
#18+
Gala_l, вместо многопоточности можно использовать Multiple Active Result Sets (MARS) . Примеры: sqlteam.com , msdn . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 12:59:42 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=37666873&tid=1359923]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
211ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 266ms |
| total: | 587ms |

| 0 / 0 |
