|
0 / 0 / 0
Регистрация: 23.12.2015
Сообщений: 4
|
|||||||||||||||||||||
.NET 2.x Передача chart в поток через BeginInvoke23.12.2015, 22:20. Показов 1971. Ответов 6
Добрый день.
Идея в следующем. Из главного окна приложения вызывать во второстепенном потоке метод который будет вычислять и строить графики на chart1 и chart2. И оставлять на главной форме активной только одну кнопку чтобы можно было выйти из этого метода раньше(если пользователь ввел некорректные данные, метод может выполняться долго). Создается делегат этого метода. И из второстепенного потока через BeginInvoke он через делегат вызывается. Но при отладки проекта вылетает ошибка, что элемент управление не может использоваться двумя потоками. Ругается именно на chart. Вот листинг программы. Сначала я определяю делегаты.
Затем в обработчике private void button4_Click_1 вызывается следующая функция
Если расскоментарить строчку
Она появляется только тогда, когда в коллекцию точек chart1 методами
Так вот можно ли как то корректно передать в фоновый поток chart??? Или как увеличить количество памяти выделенное под точки chart1.Series[0].Points и chart1.Series[1].Points???
0
|
|||||||||||||||||||||
| 23.12.2015, 22:20 | |
|
Ответы с готовыми решениями:
6
Дочерняя форма через поток - постоянная передача данных и отображение Через Chart показать температуру воздуха за месяц через гистограмму Нужно создать базу данных (создать пустой бинарный файл). Через поток. Поток бинарного файла описать в виде локальной переменной внутри функции. |
|
0 / 0 / 0
Регистрация: 23.12.2015
Сообщений: 4
|
||||||
| 29.12.2015, 21:40 [ТС] | ||||||
|
Для корректных изменений в chart. Я каждый раз при обращении к chart из другого потока проверяла используется ли он каким либо потоком. Если да то ставила обращение в очередь
0
|
||||||
|
|
||
| 29.12.2015, 22:32 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 23.12.2015
Сообщений: 4
|
|
| 29.12.2015, 22:39 [ТС] | |
|
А затем что я уже написала большую библиотеку, а только сейчас возникла необходимость выполнения функций этой библиотеки в фоновом потоке.
0
|
|
|
|
||
| 29.12.2015, 22:43 | ||
0
|
||
|
|
|
| 29.12.2015, 22:57 | |
|
terrrrry, Из вашего кода трудно что-то понять, поэтому посоветовать что-то конкретное трудно. Не понятно откуда берутся данные, сколько их, как вы их обрабатываете. Если вы приведете работоспособный пример в котором будет видна ваша проблема - можно будет сказать что то определенное.
А в целом: 1) Вы уж намудрили с потоками, делегатами, асинхронными вызовами и т.д. Один вид вот этого делегата DelegateForpaint_Magnitude_Response уже пугает. Зачем он вообще нужен? Почему вы просто не выполняете код в методе Magnitude_Response? Вы создаете поток а в нем запускаете delegate.BeginInvoke, который создает еще один поток. Зачем? 2) Игры с CheckForIllegalCrossThreadCalls нужно заканчивать. Они ни к чему хорошему не приводят. Обращаться к контролам можно только в главном потоке приложения. Обращаться к контролам из вторичных потоков - категорически нельзя. 3) Далее, как вам уже выше сказали, данные - отдельно, отображение - отдельно. Если вы снимаете какие-то данные, их можно обрабатывать в отдельном потоке и сохранять в какой-либо структуре данных (в модели). Ваш же chart должен время от времени обновляться из главного потока(!) и отображать новые данные. 4) Если ваш график строится настолько долго, что вы решили вынести построение в отдельный поток - это не нормально. Нужно либо оптимизировать график (рисовать его вручную, либо взять другой контрол, который предназначен для отображения больших объемов данных), либо же оптимизировать данные и не отображать 100500 точек на экране, которые юзер все равно не различит, и которые соответственно ему не нужны.
0
|
|
|
0 / 0 / 0
Регистрация: 23.12.2015
Сообщений: 4
|
|
| 30.12.2015, 10:09 [ТС] | |
|
insite2012, конечно лучше все планировать наперед...но когла я начинала писать эту программу, то даже не подозревала о существовании потоков и делегатов...вообще это мой первый опус на объектноорентированном языке...
0
|
|
| 30.12.2015, 10:09 | |
|
Помогаю со студенческими работами здесь
7
Передача в поток Передача параметров в поток
Передача параметров в поток Передача параметров в поток Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|