【发布时间】:2023-03-23 02:36:01
【问题描述】:
我有一个简单的内部网络项目,结构如下
用户会话: 有一个计时器来检查数据库并加载更改,进行一些数据格式化并将结果放入内存表中。
主窗体: 有一个 IWTimer 来检查 Usersession 中的内存表是否更改并在需要时更新其内容。
我不使用 IWTimer 直接检查数据库,因为我不希望浏览器中有一些影响用户体验的等待时间。
问题是用户会话似乎没有消息队列,正常计时器不起作用。所以,我在 Jedi VCL 中使用了 JvThreadTimer。我在 UserSession.Create 事件中创建它并在 Destroy 事件中停止并释放它。它做得很好。
但是,当我关闭服务器应用程序时,它会立即弹出 EidClosedSocket 并显示消息“已断开连接”。在 MainForm / Usersession / ServerControl Unit 中的 Destroy 事件之前触发了异常,因此我无法找到在 Timer 触发异常之前停止它的方法。
那么有没有适当的方法在 usersession 中设置服务器端计时器,或者是否有其他方法可以进行不影响浏览器使用的定期数据库检查?
提前感谢您的帮助。
【问题讨论】: