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