|
279 / 10 / 0
Регистрация: 27.04.2016
Сообщений: 203
|
|||||||||||||||||
Dispatcher и многопоточность WPF11.08.2020, 11:46. Показов 8206. Ответов 44
Всем привет, помоги пожалуйста разобраться
Изучаю многопоточность C#, в консоле все работает как надо но вот в WPF ругается выкидывает исключение
во ViewModel получает данные
непосредственно сам способ добавления
0
|
|||||||||||||||||
| 11.08.2020, 11:46 | |
|
Ответы с готовыми решениями:
44
Многопоточность в WPF Многопоточность в WPF
|
|
Модератор
|
|||||||
| 12.08.2020, 16:31 | |||||||
|
Давайте начнём с самих "низов".
С первичными данными работает класс Repository.Как я понял, именно он считывает файлы. Если так, то "с какого перепуга" его методы возвращают ObservableCollection? Этот тип предназначен для Представления, а чего он здесь делает? Почему при каждом обращении к методу происходит новое считывание ВСЕХ данных?
0
|
|||||||
|
279 / 10 / 0
Регистрация: 27.04.2016
Сообщений: 203
|
|||||||||||||
| 12.08.2020, 16:59 [ТС] | |||||||||||||
Элд Хасп, Короткое кино https://cloud.mail.ru/public/dziU/4Ly3LLgLG
0
|
|||||||||||||
|
Модератор
|
||||
| 12.08.2020, 17:13 | ||||
|
Если можете то лучше вставляйте ролики с YuoTube. Пример тегов [YOUTUBE]WEzqCW_lmIs[/YOUTUBE]Добавлено через 3 минуты Application.Current.Dispatcher.InvokeAsync(() => будет блокировать этот поток на время своего выполнения.Все данные надо обрабатывать в других потоках. А в Диспетчере вы делаете только быструю обработку привязанной коллекции ObservableCollection. Добавлено через 1 минуту public Task LoadAsync() => Task.Run(LoadAccounts); вы создаёте задачу в другом потоке.Но в задаче выполняется метод, в котором выполнение перебрасывается опять в Диспетчер. Толку от такой асинхронности - ноль. Добавлено через 1 минуту Сколько предположительно элементов в коллекции ListAccount будет по завершении загрузки?
0
|
||||
|
279 / 10 / 0
Регистрация: 27.04.2016
Сообщений: 203
|
|
| 12.08.2020, 17:14 [ТС] | |
|
Элд Хасп,
Элд Хасп, В настройках нужно просто качество поменять, в ютуб еще не выбрасывал видео просто)
0
|
|
|
279 / 10 / 0
Регистрация: 27.04.2016
Сообщений: 203
|
||
| 12.08.2020, 17:19 [ТС] | ||
|
0
|
||
|
279 / 10 / 0
Регистрация: 27.04.2016
Сообщений: 203
|
|
| 12.08.2020, 17:20 [ТС] | |
|
Элд Хасп, Со звуком посложнее, тому виной не облако, мой микрофон(((
Но в целом там понятно что и где?
0
|
|
|
Модератор
|
||||
| 12.08.2020, 17:23 | ||||
|
Этот тип, при нормальной структуре Решения, должен находится в проекте у которого даже ссылки нет на Application и Диспетчер. Добавлено через 1 минуту Но сразу пишу - большие ошибки в проектировании архитектуры приложения.
0
|
||||
|
279 / 10 / 0
Регистрация: 27.04.2016
Сообщений: 203
|
||
| 12.08.2020, 17:24 [ТС] | ||
|
Элд Хасп, То есть все должно быть в List<> и только ViewModel передавать ObservableCollection?
Добавлено через 23 секунды
0
|
||
|
Модератор
|
||
| 12.08.2020, 17:34 | ||
|
А то переделывать "верха" когда неправильно работает их основание неэффективно. И вы не ответили, какого размера должна быть коллекция ObservableCollection передаваемая в представление?
0
|
||
|
279 / 10 / 0
Регистрация: 27.04.2016
Сообщений: 203
|
|
| 12.08.2020, 17:36 [ТС] | |
|
0
|
|
|
Модератор
|
|||
| 12.08.2020, 17:40 | |||
|
Очень большое количество может "повесть" WPF GUI. На каждый элемент, будет создаваться своя коллекция UI элементов. Это может оказаться очень накладно. Я не помню как у DataGrid настроена виртуализация. Добавлено через 39 секунд
0
|
|||
|
279 / 10 / 0
Регистрация: 27.04.2016
Сообщений: 203
|
|||
| 12.08.2020, 17:43 [ТС] | |||
|
каждый миллион я буду сохранять в отдельном файле, и в пуле загружать
0
|
|||
|
Модератор
|
|||
| 12.08.2020, 17:47 | |||
|
Добавлено через 51 секунду Это плохая идея. Добавлено через 40 секунд Если дождаться загрузки, GUI при промотке не лагает?
0
|
|||
|
279 / 10 / 0
Регистрация: 27.04.2016
Сообщений: 203
|
||||
| 12.08.2020, 17:59 [ТС] | ||||
|
Мне нужно добиться того чтоб хотя бы эти данные грузились как положено, дальше я создаю такое количество записей и тестирую) Добавлено через 2 минуты
0
|
||||
|
279 / 10 / 0
Регистрация: 27.04.2016
Сообщений: 203
|
|
| 12.08.2020, 18:09 [ТС] | |
|
0
|
|
|
Модератор
|
|||
| 12.08.2020, 18:14 | |||
|
У вас же проблема из-за загрузки с файлов. Загрузили файл. Создали событие, что загрузка завершена. ViewModel поймала событие. Из события считала данные - коллекцию ReadOnlyCollection. Преобразовала эти данные в нужный тип. Потом перешла в Диспетчер и обновила коллекцию уже созданными типами. Событие можно посылать даже не по концу загрузки файла, а допустим через 100 загруженных записей. Но десериализация будет грузить файл сразу весь, поэтому этот вариант актуален только для БД или WEB. Добавлено через 2 минуты Но я ещё раз пишу - надо проверить. У ListBox я точно знаю, виртуализация настроена по дефолту. Там создаются только видимые элементы. А вот у DataGrid - не помню. Дождитесь конца загрузки и проверьте.
0
|
|||
|
279 / 10 / 0
Регистрация: 27.04.2016
Сообщений: 203
|
|
| 12.08.2020, 18:58 [ТС] | |
|
0
|
|
|
Модератор
|
|
| 12.08.2020, 19:04 | |
|
Виснет на 32-ом?
GUI стоит или просто загрузка не продолжается? Из-за чего виснет?
0
|
|
| 12.08.2020, 19:04 | |
|
Dispatcher.BeginInvoke и Sleep mvc-dispatcher-servlet.xml В чем отличие SynchronizationContext и Dispatcher Вызов Dispatcher.Invoke из двух методов Dispatcher.Invoke() не вызывает указанный делегат Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|