Выполнение метода синхронизации при нескольких событиях, запущенных агрегатором событий [PRISM]
Мое приложение WPF состоит из множества моделей представлений, которые слабо зависят друг от друга через Event Manager.
У меня есть ситуация, когда одна из моделей представления получает несколько уведомлений от других моделей представления.
1. модуль продукта: показывает список продуктов и статус каждого элемента изменяется в режиме реального времени путем опроса в фоновом сервисе, например (активный, готовый, неактивный, простой и т. д)
2. модуль деятельности: он состоит из различных вариантов (кнопок) для того чтобы унести некоторую деятельность потребителем на выборе продукта. Модель представления получает уведомления от других моделей представления через объект агрегатора событий.
Я получаю несколько уведомлений от других моделей представления в зависимости от ситуации. Некоторые из методов вызывают веб-службу с помощью async / await и обновляют пользовательский интерфейс. Как синхронизировать выполнение метода, если я получаю уведомления одновременно или во время выполнения одной операции?
Не могли бы вы предложить для этого лучший дизайнерский подход?
Я думаю использовать semaphore slim в асинхронном методе и создать один объект блокировки для каждой модели представления. если происходит какая-либо операция, то другое уведомление будет ждать освобождения этого объекта, прежде чем приступить к выполнению
Что я уже пробовал:
Мое текущее решение является :
1. используя переменную типа bool, чтобы отслеживать, если какая-либо операция будет
2. Используйте блокировку, чтобы избежать проблем с параллелизмом.
Хотя кое-как я не чувствую, что решение является надежным и может привести к проблеме совпадения.