|
1 / 1 / 1
Регистрация: 14.11.2012
Сообщений: 42
|
|
Как вынесли выполнение определенного кода в отдельный поток23.12.2012, 02:11. Показов 1475. Ответов 3
Метки нет (Все метки)
Привет!
у меня есть функция Draw(), которая занимает очень много процессорного времени и вызывается на событиях PicBox_MouseMove, PicBox_MouseUp, а также на ресайзе и ещё кое-где. Я хочу поместить её в отдельный поток, чтобы форма не подвисала. Как мне это сделать? Добавлено через 6 часов 28 минут Хорошо, скажите мне, можно сделать объект потока глобальной переменной, или в каждом методе или событии мне придётся его описывать заново? И, самое главное, если можно, то как?
0
|
|
| 23.12.2012, 02:11 | |
|
Ответы с готовыми решениями:
3
Отдельный поток, выполнение перегруженной функции
Выполнение определенного участка кода по условию |
|
|
|
| 23.12.2012, 10:09 | |
|
Рисование невозможно вынести в отдельный поток от того потока, в котором создан контрол.
Возможные решения: 1. Оптимизировать прорисовку; 2. Вынести часть прорисовки в отдельный поток, например готовить готовое изображение, а уже его потом рисовать одной-единственной функцией; 3. Вынести основную логику проекта в отдельный от основного (рисования) поток. Я подозреваю, что проблема именно в оптимизации, так что код в студию.
0
|
|
|
1 / 1 / 1
Регистрация: 14.11.2012
Сообщений: 42
|
|
| 23.12.2012, 15:45 [ТС] | |
|
Код пока ещё не готов, он будет рисовать линии уровня некоторой функции, причём та реализачия, которой придерживаюсь я, действительно объёмная. как только заставлю его работать - выложу
Добавлено через 1 час 32 минуты Может, кто-нибудь знает какой-нибудь способ рисования этих линий уровня? я уже спрашивал это в другой теме, но там никто не ответил. Я придумал два способа: или перебирать все пикселы PicBox'а и проверять значение функции в каждой на равенство с одним из значений линий уровня, и в случае успеха делать SetPixel, или по значению функции, равному одному из значений линий уровня, вычислять соответствующие точки. Оба метода - очень громоздкие и неэффективные, поэтому я и хотел их запоточить.
0
|
|
|
|
|
| 23.12.2012, 20:00 | |
|
В отдельный поток можно вынести вычисления. А уже из результат можно использовать для прорисовки.
Фактически, вы можете сделать рисование графика в отдельном потоке на Bitmap, а потом на контрол рисовать полученный Btimap (Graphics.DrawImage()) Добавлено через 1 минуту Но этот способ кажется мне "неправильным". Желательно оптимизировать алгоритм (с ним я помочь не могу), что рисование успевало выполниться в основном потоке.
0
|
|
| 23.12.2012, 20:00 | |
|
Помогаю со студенческими работами здесь
4
Выполнение определенного куска кода с задержкой в секунду Выполнение определенного кода через определенный интервал времени
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|