Информация

Дата основания
Местоположение
Россия
Сайт
www.tinkoff.ru
Численность
5 001–10 000 человек
Дата регистрации

Блог на Хабре

Обновить
Комментарии 9
Скачиваем и устанавливаем подходящую версию Download. Для удобной работы из среды .NET разработана обертка GhostScriptNet, которую также придется скачать. Архив распаковываем неподалеку от проекта. В архиве нас интересует сборка Ghostscript.NET.dll, которую незамедлительно подключаем к проекту

Как много действий.

Правильный путь — Install-Package iTextSharp
Разве iTextSharp позволяет рендерить PDF в картинку? Впрочем GhostScript тоже есть на nuget.org
Next is to convert the PDF document generated by ItextSharp to an image with Spire.Pdf.

Всё же "нет". Поскольку для рендеринга используется другая библиотека (Spire.Pdf). Но спасибо за ссылку.
Я не знаю, какую версию .NET вы используете и что подвигло вас использовать тот или иной подход к релазиации многопоточности в 2016 году но пару моментов бросились в гласа сразу:

lock (PageStore) {
   PageStore[pageNumber] = mem;
}

Зачем использовать Dictionary<int, MemoryStream>, если у Вас используется доступ по индексу, когда есть MemoryStream[] и неблокирующий доступ по индексу, а количество можно определять использую атомарный инкремент?
Ну и еще, т. к. процесс печати так же занимает определенное время стоит посмотреть в сторону блокирующих очередей (BlockingCollection в .NET 4+), Reactive Extensions и Dataflow.
Не понимаю связь между годом и многопоточностью.
Согласен, конкретно в данном примере вполне можно использовать MemoryStream[].
Про год, это я к тому, что уже есть TPL, PLINQ, async/await, различные потокобезопасные структуры данных и т. д., поэтому код, который использует ThreadPool.QueueUserWorkItem напрямую вызывает некоторые вопросы сам собой, не говоря уже о конкретном способе его использования и блокировок.
Есть, и что теперь ThreadPool.QueueUserWorkItem забыть как тупиковую ветвь эволюции?)

image
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.