|
избавиться от MemoryStream
|
|||
---|---|---|---|
#18+
Всем привет, у меня есть метод, который тянет из MS SQL несколько pdf потоком в виде VarBinary, с помощью PDFSharp все склеивается в один pdf. Код: 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.
Проблема в том, что мне приходится использовать оберточный MemoryStream, который нормально так отжирает память-хотелось бы избавиться от него. Причем объем потребления памяти увеличивается непропорционально размеру файлов. То есть если нужно из базы получить 10 файлов по 1 Мб и склеить его в один файл 10 мб, то метод отъедает +150 мб Ram. Если не использовать MemoryStream, а сразу возвращать Код: c# 1.
, то при инициализации Pdf-документа Код: c# 1.
, получаю Exception "Specified method is not supported". Это происходит при попытке получить PdfReader SqlSequentialStream.GetLenght(). Это из-за того, что SqlSequentialStream Not Seekable и не имеет длины. Вот собственно вопрос- как можно зарефактрить? Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2021, 16:32 |
|
избавиться от MemoryStream
|
|||
---|---|---|---|
#18+
vb_sub, можно заменить MemoryStream на RecyclableMemoryStream - авторы (то бишь майкрософт) обещают от этого кучу профитов:
... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2021, 18:24 |
|
избавиться от MemoryStream
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, пробовал эту тему- на мое удивление с ним стало только хуже. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2021, 08:16 |
|
избавиться от MemoryStream
|
|||
---|---|---|---|
#18+
vb_sub Сон Веры Павловны, пробовал эту тему- на мое удивление с ним стало только хуже. Ну тогда, если для PdfReader нужен только размер данных потока, получать этот размер в запросе (функция datalength), и написать свою обёртку, реализующую Stream, и читающую данные мелкими блоками. А если нужен действительно полноценный seekable stream, то тут от хранения всего содержимого бинарного поля на клиенте не отвертеться никак. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2021, 08:28 |
|
избавиться от MemoryStream
|
|||
---|---|---|---|
#18+
Печально ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2021, 11:40 |
|
|
start [/forum/topic.php?fid=20&tid=1398212]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 146ms |
0 / 0 |