|
0 / 0 / 0
Регистрация: 24.12.2017
Сообщений: 18
|
||||||
Синхронизация вычислений рабочего потока и отрисовки в UI потоке30.01.2018, 21:32. Показов 1367. Ответов 10
Метки нет (Все метки)
В общем в Ui потоке должна идти пошаговая отрисовка ячеек, которые лежат в GridView, а в рабочем созданном потоке производятся вычисления ячеек и соответственно после каждой итерации вычислений должна происходить отрисовка.
Я реализовал это через post, но в процесса работы все таки отрисовываются не совсем корректно. Такое ощущение как будто поток интерфейса не успевает обработать сообщение и перерисовать элементы, а рабочий поток уже переходит на другую итерацию вычислений, хотя насколько я понимаю, все должно работать синхронно. Вот пример как я сделал:
![]() П.С. первый раз спрашиваю на форму, так что извиняйте, если неправильно оформил))
0
|
||||||
| 30.01.2018, 21:32 | |
|
Ответы с готовыми решениями:
10
Создать дочернее окно в новом потоке для отрисовки рисунка
Показывать ProgressBar вычислений, запущенных в отдельном потоке |
|
MiThEoN
|
||||||
| 31.01.2018, 05:30 | ||||||
|
Попробуйте так:
1
|
||||||
|
0 / 0 / 0
Регистрация: 24.12.2017
Сообщений: 18
|
||
| 01.02.2018, 00:01 [ТС] | ||
0
|
||
|
0 / 0 / 0
Регистрация: 24.12.2017
Сообщений: 18
|
||
| 01.02.2018, 01:32 [ТС] | ||
В любом случае, спасибо за ответы
0
|
||
|
MiThEoN
|
|||||||||||
| 01.02.2018, 13:28 | |||||||||||
|
Вы создаете handler или runnable чаще чем они успевают выполнится. Потому что ваши вычисления легче чем запуск этих вставок на ui поток.
Если бы Ваши вычисления выполнялись допустим больше секунды, не было бы и проблем Добавлено через 7 часов 1 минуту
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 24.12.2017
Сообщений: 18
|
|||||||
| 03.02.2018, 22:28 [ТС] | |||||||
0
|
|||||||
|
MiThEoN
|
|
| 03.02.2018, 23:33 | |
|
Новый runnable это как новая инъекция своего кода в ui поток.
А теперь представьте что вы делаете эти инъекции постоянно в цикле без какой либо задержки Сама инъекция уже требует времени из ui потока даже если ни какого кода выполнятся не будет И получается что вы забивает ui поток этими инъекциями. Поток забивают не ваши вычисления, и даже не отрисовка. А именно эти инъекции И под инъекцией я предполагаю не прямой запуск вашего кода на ui, а всегда отложенный запуск до момента появления свободного вычислительного времени на ui потоке. Никогда не запускайте runnable в цикле. Возьмите себе за правило такой подход. Какого рода вычисления у вас? И какие данные переходят из потока в поток? Может придумаем для вас решение получше Добавлено через 2 минуты Можете убедиться в моих словах путем логировани. И по времени посмотрите что где и сколько раз запускается
0
|
|
|
0 / 0 / 0
Регистрация: 24.12.2017
Сообщений: 18
|
|||||||
| 04.02.2018, 22:24 [ТС] | |||||||
![]() Вот код метода с параллельным расчетом:
0
|
|||||||
|
MiThEoN
|
||||||||||||||||
| 05.02.2018, 09:47 | ||||||||||||||||
|
Мое мнение такое. Поставь себе либу RxJava. Хорошо что есть по ней много туториалов, без труда сможешь вникнуться.
Как подключишь, придется написать что то вроде этого, не более
Да и, у тебя есть массивы данных, которые как я понял обновляются в другом потоке, и выводятся на UI Если они хоть как то будут обновляться на UI, их сразу следует сделать другим типом AtomicArray(точно не помню), чтобы не было коллизий данных между потоками
1
|
||||||||||||||||
|
0 / 0 / 0
Регистрация: 24.12.2017
Сообщений: 18
|
|
| 06.02.2018, 18:53 [ТС] | |
|
Спасибо, буду читать и разбираться
Насчет обновления массивов. В том месте, где используется параллельный поток, они обновляются только в нём во избежание как раз конфликтов между потоками.
0
|
|
| 06.02.2018, 18:53 | |
|
Помогаю со студенческими работами здесь
11
Выполнение длительных вычислений и операций в отдельном потоке Закрыть форму во втором потоке при окончании вычислений в первом Синхронизация асинхронных событий в одном потоке Синхронизация потока база рабочего потока Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|