【发布时间】:2014-04-30 12:12:25
【问题描述】:
我对“延迟写入失败”错误失去了耐心。它默默地断开数据库与应用程序的连接,因此在使用它时不会将任何内容保存在数据库中。有没有办法检测事件本身,以便我可以发出警告?或者也许监视连接本身是否断开连接?每个人似乎都错过了 Windows XP 的气球提示,所以我想闪烁一个更明显的警告,即必须重新启动应用程序。微软似乎找到了一种迫使人们升级的方法...... 我想这可以通过计时器来完成,并不断检查连接的用户:
cxlabel1.Caption := IntToStr(DataModule2.ABSDatabase1.GetDBFileConnectionsCount);
但我想更多的是检查/检测事件本身。 Delphi中有什么东西可以检测到这一点吗? 我想听听您对此的想法...
【问题讨论】:
-
出现这种情况时你在做什么? - 它默默地断开数据库与应用程序的连接:什么是“它”和“数据库”?什么类型的连接?
-
除非您在磁盘/网络非常恶劣的环境中运行,否则您不应该经常看到“延迟写入错误”。如果没有充分的理由,您需要先修复 PC,然后再担心围绕它进行编码。
-
它是一个小型的多用户数据库,以绝对数据库作为后端数据库。问题是,当断开连接发生时,Windows XP Flash 会延迟写入气球提示,但用户似乎错过了这一点。所以他们只是继续写入数据库,就好像什么都没发生一样。他们“看到”网格中输入的信息,但问题是实际上没有任何内容写入数据库。因此,如果您关闭程序,您从延迟写入错误中输入的所有内容都将永远丢失。 @afrasier - 你是对的......这是一个非常磁盘/网络敌对环境。但我不是网络管理员。
-
这就是为什么我也不愿意使用计时器。它只会增加不必要的流量,使情况变得更糟。所以我可能不得不为这个场合使用一些其他的事件。该错误不会经常出现,但一旦出现,可能会造成损坏。
-
在不改变写入数据的位置的情况下,我认为您只能教育用户不要拔出闪存驱动器。用户会犯错误。当他们这样做时,教育他们。他们学习并停止制造它们。您不必防止每一种类型的用户错误。
标签: delphi delphi-xe4