Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Эксперт .NET
 Аватар для Wolfdp
3789 / 1766 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3

Синхронизация Модели с UI потоком

09.01.2024, 12:06. Показов 2478. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Тема создана разделением исходной: Как определить из кода библиотеки Standard платформу приложения (Forms, WPF, UWP, Framework, Core и т.д.)?

Немного нубский вопрос -- насколько плохо считается прокидывать Dispatcher в модель/команду? Я просто сейчас для себя пишу WPF приложуху, и для отслеживания изменения не из UI потока прям в модель запихиваю диспетчер из окна/контролера. Я так понимаю желательно максимально отвязывать от UI модели/команды, но не особо представляю как это сделать малой кровью.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.01.2024, 12:06
Ответы с готовыми решениями:

Модуль EVO II синхронизация 50гц, На какой ножке контроллера синхронизация шим двигателя?
Частый дефект для модулей EVO II с коллекторным двигателем - нет управления двигателем при помехах в сети. Помехи создают диммеры, блоки...

Как обратиться к исходной модели моего класса из прокси-модели в pyqt5?
У меня есть модель my_model класса MyModelClass(QAbstractTableModel), у которой есть переменная класса columns. Я подключаю эту модель к...

Как создать скелет для stl модели по точкам поверхности модели?
нужно придумать алгоритм, чтобы автоматически создавался скелет для stl модели по точкам поверхности модели. Перерыл весь интернет (как мне...

43
 Аватар для Andrey-MSK
3313 / 2200 / 387
Регистрация: 14.08.2018
Сообщений: 7,404
Записей в блоге: 4
11.01.2024, 15:44
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Элд Хасп Посмотреть сообщение
В MvvmLight есть своя реализация команд, но он позволяет использовать и любую другую, из любой другой сторонней библиотеки.
Нет жёсткой завязки именно на свою реализацию. Именно за это здесь и написано.
Я про то, что в исходном коде нет ссылок на сторонние библиотеки, в using только стандарты NET. Единственное там то, что примеры не для WPF.

Добавлено через 59 секунд
C#
1
2
3
using System;
using System.Threading.Tasks;
using System.Windows.Input;
Добавлено через 2 минуты
Элд Хасп, А не, одну нашел... Прошу пардону
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16117 / 11238 / 2887
Регистрация: 21.04.2018
Сообщений: 33,038
Записей в блоге: 2
11.01.2024, 18:37
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
А не, одну нашел... Прошу пардон
юсинги - это же не сборки.
надо по зависимостям сборки или проекта смотреть
0
1338 / 918 / 264
Регистрация: 08.08.2014
Сообщений: 2,762
11.01.2024, 22:18
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
В простейшем случае синхронизация используется вот так. Делаем свойство VM и во View получаем контекст нужного окна
C#
1
2
3
4
5
6
private void Window_Loaded(object sender, RoutedEventArgs e)
{
    IReportByDateWindowVM vm = (IReportByDateWindowVM)DataContext;
 
    vm.ViewContext = SynchronizationContext.Current;
}
А разве тут не у всех окон будет одинаковый контекст при такой реализации? Ну т.е. в документации на 'Current' написано, что:
Gets the synchronization context for the current thread.

https://learn.microsoft.com/en... xt.current
UI-события всегда приходят в UI-потоке, а UI-поток у нас всегда один и неизменный со старта приложения, а значит и контекст всегда будет один и тот же общий. Вот если обработчик будет 'async' и перед получением контекста будет какой-нибудь 'await', тогда да, есть шанс получить какой-то другой контекст (или вообще null).
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16117 / 11238 / 2887
Регистрация: 21.04.2018
Сообщений: 33,038
Записей в блоге: 2
11.01.2024, 23:42
Цитата Сообщение от kotelok Посмотреть сообщение
UI-события всегда приходят в UI-потоке, а UI-поток у нас всегда один и неизменный со старта приложения,
Не путайте основной поток приложения, тот в котором начало работать приложение, и UI поток.
Это в "стандарте" так, как вы пишите. Но по факту можно такого наворотить...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        private async void Application_Startup(object sender, StartupEventArgs e)
        {
            TaskCompletionSource tsc = new();
 
            new Thread(_ =>
            {
                var wind = new MainWindow();
                wind.ShowDialog();
                tsc.SetResult();
            })
            {
                IsBackground = true,
                ApartmentState = ApartmentState.STA
            }
            .Start();
 
            await tsc.Task;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.01.2024, 23:42
Помогаю со студенческими работами здесь

При выборе из Ad модели выбрать по кол-ву в связанной модели ad_images
Всем привет В laravel 6 с фильтром из таблицы ads и хочу установить условие чтобы возвращались только с существующими каритинками в...

Выбор в таблице данных модели ссылки на экземпляр связанной модели
Есть ли какой-то автоматизированный способ вывести на страницу таблицу с записями модели, одно из полей которой ссылается на связанную...

Как вытащить значение поля модели внутри самой модели
Здравствуйте. При написании моего проекта возник следующий вопрос. Имеется модель: class Candidate(models.Model): ...

Как использовать представление одной модели в представлении другой модели?
Добрый день! Хотел бы узнать как использовать представление одной модели в представлении другой модели? В Yii2 совсем новичок. ...

Скрыть все 3д модели или их части что находятся за границами другой модели
Есть стекло, за ним находиться 3д модель персонажа почти в притык, и надо что бы если персонаж будет вылезать например в право или в лемо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
44
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru