|
7 / 4 / 3
Регистрация: 07.08.2016
Сообщений: 65
|
|
.NET Core Асинхронность в Avalonia (MVVM)16.09.2020, 18:46. Показов 7900. Ответов 25
Кликните здесь для просмотра всего текста
Avalonia — кроссплатформенная платформа пользовательского интерфейса на основе XAML, основанная на WPF/UWP и распространяемая под лицензией MIT.
Приветствую всех, Я про Avalonia слышал давно, но руки до пощупать дошли только сейчас, тем более это уже релизная версия. В общем, проблема в следующем — любая попытка инициализировать какую-то задачу в другом потоке приводит к зависанию интерфейса. Зависает наглухо где-то на 1.5 секунды и потом его отпускает, в принципе терпимо, но выглядет убого и если долго пользоваться таким приложением, то дело, вероятно, закончится нервным тиком. Тут стоит прояснить, что дело разворачивается на MacOS (но вроде как такая же проблема и на Windows присутствует). У кого-нибудь, кто пользовался этим чудом кроссплатформенности была такая трабла?
0
|
|
| 16.09.2020, 18:46 | |
|
Ответы с готовыми решениями:
25
Консоль .Net Core и Avalonia В чем принципиальное отличие Avalonia и Xamarin? |
|
7 / 4 / 3
Регистрация: 07.08.2016
Сообщений: 65
|
||||||||||||
| 17.09.2020, 18:53 [ТС] | ||||||||||||
0
|
||||||||||||
|
Модератор
|
||||
| 17.09.2020, 19:22 | ||||
|
У меня он чуть лагает (все кнопки), но вроде так должно решаться. Возможно у вас будет гладко работать. Загружать стек всё таки не правильно. Добавлено через 2 минуты Это одно из типовых, часто используемых решений. Создаётся по ОДНОМУ экземпляру каждого типа. А при переходе на нужный тип подгружаются в него нужные данные. Добавлено через 1 минуту Но вариант при котором вызов асинхронного метода происходит в конструкторе, вполне возможно может приводить к лагам.
0
|
||||
|
7 / 4 / 3
Регистрация: 07.08.2016
Сообщений: 65
|
|||||||||
| 17.09.2020, 19:55 [ТС] | |||||||||
По идее MainViewModel ничего не должен знать о методах которые будут использоваться в других моделях. Ну это как-то странно если он будет знать все о всех. Добавлено через 9 минут
0
|
|||||||||
|
Модератор
|
|||||||||
| 17.09.2020, 20:20 | |||||||||
|
Но чтобы дать ПРАВИЛЬНОЕ решение нужно разбираться в реактивной модели используемой Avalonia, причинах по которому GUI Avalonia лагает при использовании асинхронного метода в конструкторе ViewModel. Для меня это пока тёмный лес... Что касается создании при каждом нажатии на кнопку новой VM - это тоже неверно. Если View должна отобразить те жи данные, то зачем для них создавать новый экземпляр VM. Надо просто сослаться на уже существующий. Я не знаю как этот делается в Avalonia, но в развитых фрамеворках для этого используется примерно такой метод
Если она ранее создавалась, то возвращает её из пула. Если нет - создаёт новый экземпляр и запоминает его в пуле. Добавлено через 1 минуту Но для меня это не имеет смысла. Смысл в ней - это возможность использования вне Windows. А у меня только комп. Добавлено через 13 минут Смотрите как у нас реализовано приложение по уровням:
Раз по вашей архитектуре все три View - это основные View, то они не должны знать друг о друге. И кнопка не должна переключать на другую View, она должна посылать сообщение (или восходящую команду). Его должен "поймать" App и переключить на другую View. А в "полномочия" App входят любые манипуляции с любыми типами приложения. Добавлено через 4 минуты Так же, возможно, вы неверно воспринимаете архитектуру свое приложения. Обратите внимание, что MainView - это окно. А две остальные - это UserControl, которые которые в нём отображаются. Тогда можно воспринимать их не как одноранговые с основным, а как вложенные в него (или дочерние). И при таком подходе Main владеет о них информацией, в том числе и может обращаться к методам их VM.
1
|
|||||||||
|
7 / 4 / 3
Регистрация: 07.08.2016
Сообщений: 65
|
||||||||||||||||||||||
| 17.09.2020, 23:33 [ТС] | ||||||||||||||||||||||
В вашем варианте:
0
|
||||||||||||||||||||||
|
Модератор
|
||
| 18.09.2020, 06:00 | ||
|
Поля _search и _login кроме как в свойствах Search и Login нигде не используются. Свойства эти только ссылаются на эти поля. То есть по факту это свойства "Только для Чтения" но реализованные более громоздко. Явная типизация команд позволяет использовать методы типа присущие ему. Допустим, в интерфейсе ICommand нет метода принудительного вызова события. Но на практике он часто нужен. Например метод Invalidate в такой реализации Новая реализация RelayCommand с исправлениями от proa33 и kolorotur [WPF, Элд Хасп]. Явная типизация позволяет использовать подобные методы и другие члены типа. В реализации ReactiveCommand<Unit, Unit>, кроме членов ICommand, есть несколько десятков других членов: свойств, методов, методов расширений.И явная типизация позволяет обращаться к ним.
0
|
||
| 18.09.2020, 06:00 | |
|
Асинхронность Асинхронность?
Потоки. Асинхронность Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов.
Логика кажется понятной:
1. Находим ключевые слова.
2. Добавляем их на. . .
|
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302
Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
|
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс
Ссылка на сгенерированную музыкальную композицию:
https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013
Я говорю, что Время- как вода
течет. . .
|