【发布时间】:2011-12-09 04:48:22
【问题描述】:
我正在编写一个 TAPI 应用程序,它使用状态模式来处理 TK 可能处于的不同状态。传入和传出呼叫通过 ObservableCollection 记录在 ListView(呼叫日志)中。呼叫数据与存储在 SQL-Server 数据库中的联系人进行比较,以确定可能的匹配项。然后使用该信息来更新呼叫日志。当然,所有这些都是实时的,并且都由 FSM(有限状态机)的不同状态控制/控制。
为了区分呼叫,我确实使用了呼叫 ID(由 TAPI 提供)。当电话响起或我开始呼出时,包括其呼叫 ID 的新记录将添加到呼叫日志中,并在客户数据库中搜索该号码,并相应更新日志中的某些数据。当处理不同的呼叫状态时,应用程序会动态更新日志(即更改可视化显示特定呼叫状态的图标等)。
ObservableCollection 的这些更新确实让我头疼,因为它们需要按特定顺序进行。例如,当接收到呼叫时,关联状态将在ObservableCollection 中创建一个新条目。当状态更改时,新状态可能会尝试更新集合,即使天气不清楚,要更改的条目已经添加。状态切换得非常快,显然比更新集合要快。
某种消息队列会是一个可能/好的解决方案吗?如果是这样,如何实现这样的消息队列 - 在状态机或ObservableCollection 的上下文中。我不是在寻找完整的解决方案,但如果我无法通过 google 或 stackoverflow 轻松找到任何信息,我将不胜感激。
编辑:大大改写了问题。
编辑:我为这个问题添加了自己的解决方案,但会等待看看是否有人有更好的想法。
【问题讨论】:
-
顺便说一句,您需要将
break添加到您的foreach以使其等同于FirstOrDefault。 -
哦,当然,谢谢。编辑我的帖子以反映该信息。虽然它不会改变这种特殊情况下的结果。
-
改写问题以使主要问题更清楚(因为它现在对我来说更清楚了。
标签: c# message-queue observablecollection state-machine