我有一个具有三种状态的 Web 应用程序。
- 拨入-(基本上,以下都不是)
- VOIP — 连接到 Freeswitch 实例
- 听——此选项是通过与 FMS 实例的正常连接(与 #2 不同的服务器)。
当用户首次进入应用程序时,通过弹出窗口选择初始状态。从那时起,这些都由一个 ComboBox 控制。当它发生变化时,应用程序会检查所有打开的连接,然后关闭它们。然后它会打开适当的新连接。
问题是有时这会导致应用程序冻结 10-20 秒,有时会导致它崩溃,我不知道为什么。trace
应该在 VOIP 更改之前触发的 s 仅在冻结之后出现(时间戳会有延迟),但是如果我注释掉对更改函数的调用,它们会按照预期的顺序出现。
到底是怎么回事?这种架构根本站不住脚吗?有没有更好的方法来做事?