Kassim Shaikh Ответов: 0

Выполнение метода синхронизации при нескольких событиях, запущенных агрегатором событий [PRISM]


Мое приложение WPF состоит из множества моделей представлений, которые слабо зависят друг от друга через Event Manager.

У меня есть ситуация, когда одна из моделей представления получает несколько уведомлений от других моделей представления.

1. модуль продукта: показывает список продуктов и статус каждого элемента изменяется в режиме реального времени путем опроса в фоновом сервисе, например (активный, готовый, неактивный, простой и т. д)

2. модуль деятельности: он состоит из различных вариантов (кнопок) для того чтобы унести некоторую деятельность потребителем на выборе продукта. Модель представления получает уведомления от других моделей представления через объект агрегатора событий.

Я получаю несколько уведомлений от других моделей представления в зависимости от ситуации. Некоторые из методов вызывают веб-службу с помощью async / await и обновляют пользовательский интерфейс. Как синхронизировать выполнение метода, если я получаю уведомления одновременно или во время выполнения одной операции?


Не могли бы вы предложить для этого лучший дизайнерский подход?

Я думаю использовать semaphore slim в асинхронном методе и создать один объект блокировки для каждой модели представления. если происходит какая-либо операция, то другое уведомление будет ждать освобождения этого объекта, прежде чем приступить к выполнению

Что я уже пробовал:

Мое текущее решение является :
1. используя переменную типа bool, чтобы отслеживать, если какая-либо операция будет
2. Используйте блокировку, чтобы избежать проблем с параллелизмом.

Хотя кое-как я не чувствую, что решение является надежным и может привести к проблеме совпадения.

0 Ответов