Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
6 / 6 / 2
Регистрация: 07.11.2012
Сообщений: 95

Работа с Bitmap в асинхронном режиме

20.11.2020, 16:45. Показов 1031. Ответов 3

Студворк — интернет-сервис помощи студентам
Доброго времени суток

Мне необходимо обработать PDF файл постранично. Для начала я формирую массив страниц, где при помощи nuget пакета Pdfium.Net.SDK я получаю массив страниц в виде массива bitmap. Далее, для увеличения скорости обработки, я хочу каждую страницу обрабатывать в новой таске и вот тут я столкнулся с проблемой. Массив Bitmap находится в основном потоке и из-за того, что Bitmap является потоко защищённым объектом, я не могу передать его в другой поток.
Собственно вопрос, как правильно передать bitmap изображение в новый поток?

Я понимаю, что можно попробовать поиграться с массивом byte или с потоками, но корректно ли это решение?

Пожалуй сразу уточню, фактически мне необходимо на каждой странице найти QR код и распознать его, для этого я использую MessagingToolkit.QRCode.

(Возможно мой подход в корне неверен, поэтому если стоит делать иначе, прошу предложить вариант в каком направлении мыслить)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.11.2020, 16:45
Ответы с готовыми решениями:

Работа с COM-портом в асинхронном режиме
Пробую разобраться с работой COM порта. Получилось запустить в синхронном режиме. Стало ясно, что в этом режиме, вызывая функцию чтения...

Работа с COM-портом в асинхронном режиме
Здравствуйте, пытаюсь написать программу для чтения и записи данных в com порт, в дебаггере все работает как надо, а если ее просто...

Работа с устройством в асинхронном режиме по последовательному порту через GPIB/USB конвертор
Я использую usb переходник, который эмулирует com порт. При синхронном режиме, мои команды нормально отправляются, и на них приходят...

3
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
20.11.2020, 18:14
Самый быстрый способ скорее всего будет LockBits, вместо Marshal использовать unsafe, строки обрабатывать в своем потоке. Или попытаться сравнить существующие сторонние библиотеки для обработки изображений: ImageSharp, Magick.NET, SkiaSharp...
0
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,100
20.11.2020, 22:36
Цитата Сообщение от Nicrom Посмотреть сообщение
я не могу передать его в другой поток.
вы уверенны? Может просто не стоит обращаться к одному Bitmap из разных потоков одновременно?
0
6 / 6 / 2
Регистрация: 07.11.2012
Сообщений: 95
23.11.2020, 14:02  [ТС]
I2um1, nedel, спасибо за ответы! Но проблема была в другом, совсем глупая, я создавая библиотеку для Windows Form, забыл указать .ConfigureAwait(false)

P.S.: Пошёл искать и читать книгу про асинхронность, авось так забывать про подобное перестану...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.11.2020, 14:02
Помогаю со студенческими работами здесь

COM-порт в асинхронном режиме
Настраиваю COM-порт для работы в асинхронном режиме с использованием API. К порту подключаю RS-232 переходник и смотрю сигналы на выводах....

ADO в асинхронном режиме.
Ну вот, и я решил задать вопрос, может кто-то натолкнет на мысль. Суть непонятки в следующем: while...

Проблема работы COM- в асинхронном режиме
Задача написать WPF приложение, работающее с пулом COM-портов, к которым подключены модемы. Вначале выбирается свободный модем: ...

Не работает Com порт в асинхронном режиме
Крайне необходимо небольшое приложение для Com порта работающее в асинхронном режиме. Принял некоторое переменное количество байт и сразу...

Таймер Т2 в асинхронном режиме, Атмега8
Здравствуйте, сил нет и мысли кончились. Простите за такую преамбулу. Делаю простой и незатейливый код на Атмеге8, для начала просто...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru