Я программирую приложение TAPI, которое использует шаблон состояний для работы с различными состояниями, в которых может находиться ТЗ. Входящие и исходящие вызовы записываются через ObservableCollection
в ListView
(журнал вызовов).Данные вызова сравниваются с контактами, хранящимися в базе данных SQL-Server, для определения возможных совпадений.Эта информация затем используется для обновления журнала вызовов.Конечно, все это в режиме реального времени и все в / в различных состояниях FSM (конечный автомат).
Чтобы различать звонки, я использую идентификатор звонка (который предоставляется TAPI).Когда телефон звонит или я начинаю звонить, новая запись, включая ее идентификатор вызова, добавляется в журнал вызовов, и в базе данных клиентов выполняется поиск номера, и определенные данные в журнале соответствующим образом обновляются.При прохождении через различные состояния вызова приложение динамически обновляет журнал (т.е. изменяет значок, который визуально показывает состояние конкретного вызова и т. Д.).
Именно эти обновления ObservableCollection
вызывают у меня головную боль,так как они должны происходить в определенном порядке.Например, при получении вызова связанное состояние создаст новую запись в ObservableCollection
.Когда состояние изменяется, новое состояние может попытаться обновить коллекцию, даже если не ясно, какая запись должна быть изменена, уже добавлена.Состояния переключаются очень быстро, по-видимому, быстрее, чем может происходить обновление коллекции.
Будет ли какая-то очередь сообщений возможной / хорошим решением?Если да, то как можно реализовать такую очередь сообщений - в контексте конечного автомата или ObservableCollection
.Я не ищу полных решений, но любая информация, которую я не могу легко найти через google или stackoverflow, была бы признательна.
Редактировать : значительно перефразировать вопрос.
Редактировать : Я добавил собственное решение проблемы, но подожду и посмотрю, найдется ли кто-нибудь с лучшей идеей.