我对“延迟写入失败”错误失去了耐心。它默默地将数据库与应用程序断开连接,因此在使用数据库时不会将任何内容保存在数据库中。有没有办法检测事件本身,以便我可以闪烁警告?或者可能是监控连接本身是否断开连接?每个人似乎都错过了Windows XP中的气球提示,因此我想要闪现更明显的警告,即必须重新启动应用程序。看来微软已经找到了一种迫使人们升级的方法.... 我想这可以通过计时器完成,并不断检查连接的用户:
cxlabel1.Caption := IntToStr(DataModule2.ABSDatabase1.GetDBFileConnectionsCount);
但我更多地考虑检查/检测出现的情况。 Delphi中有什么东西可以检测到这个吗? 我想听听你的想法...
答案 0 :(得分:0)
将此作为答案,因为评论长度有限。
我之前见过这个。 IIRC,你遇到的问题是延迟写入错误是一个操作系统错误,它与你的应用程序无关。 Windows已经告诉您,写入已正确提交到磁盘。您将不得不尝试挂钩操作系统错误以查看何时发生这种情况。
您需要解决网络问题,因为问题出在哪里。在我们的情况下,这是一个导致问题的故障路由器。
期望用户检查错误消息然后处理它是不公平的。他们可能会在午餐时出去,因为它不会立即发生。他们也无法知道已经保存了什么以及没有什么。数据库损坏只是时间问题。
计时器的问题在于它可能会告诉您一切正常,因为它会在网络解决问题后触发。
更好的方法是切换到客户端/服务器数据库。您可以通过设置自己的服务器来侦听Web服务或其他远程调用,或者切换到支持客户端/服务器而不是使用基于文件的数据库的数据库。这将在数据保存出现问题时立即告诉您。