- UID
- 24060
- 帖子
- 115
- 精华
- 0
- 贡献
- 0
- 推广
- 0
- 有效BUG
- 0
- 注册时间
- 2006-10-22
|
[Bug报告]TW丢失配置的原因推测及给开发组的解决建议
今天又碰到一次配置文件丢失,TW的所有设置变回了默认设置。其实之前也碰到过几次,但是之前版本更新比较频繁,总去体验新版本了,就没深入
研究一下怎么回事。今天正好有空,就仔细看了看TheWorld.ini文件,发现了一些问题,希望对开发组解决或缓解丢失配置文件的情况有所帮助。
分析步骤:
(1):虽然我没有刻意去留意或做实验,但是我发现大多数我丢失配置文件的情况,似乎都发生在没有正常关闭TW就直接关机或重启的时候;
(2):分析TheWorld.ini内容丢失的行为。这个是TW的配置文件,除了TW,没哪个程序会访问它。因此导致配置文件内容丢失的最大可能就是TW对TheWorld.ini的非正确读写。结合第一点,我判断问题极大的可能就出在TW关闭时对TheWorld.ini这个配置文件进行了错误读写导致;
(3):沿第二点结论往下研究:TW在退出时,会有什么操作对TheWorld.ini进行读写呢?联想到TW的退出时自动保存“未关闭的标签页面”的功能,答案已经逐渐呼之欲出。经对TW操作时和关闭后所产生的TheWorld.ini文件对比发现,TW的“未关闭的标签页面”信息果然是写在TheWorld.ini里面的![OldUrl](上上次关闭TW时的“未关闭的标签页面”)+[LastUrl](上次关闭TW时的“未关闭的标签页面”)里面的内容就是。进一步实验确定TW的行为模式:当点击TW右上关闭按钮正常关闭TW时会对TheWorld.ini进行读写操作,把当前“未关闭的标签页面”信息写入文件,如果用户直接使用任务管理器终止TW则不会执行读写操作,因此推测开发组把这个读写配置文件的过程写在了TW执行正常关闭的模块里;
(4):结合以上三点,试图推出TW非正常读写配置文件原因。结论:“当未正常关闭TW就直接关机或重启时,系统要求TW关闭,TW开始执行关闭过程,并将未关闭的标签页面信息写入TheWorld.ini文件中,恰在此时,由于读写配置文件的时间超出系统设定的程序响应限时,于是系统就直接终止了TW进程,导致TW未能正常完成写入TheWorld.ini并保存的这一过程,于是下次开机TheWorld.ini文件内容丢失,TW配置丢失……”
推论,可能用过某些优化程序,如优化大师和超级兔子等,并设置了系统自动终止未响应程序和缩短了系统等待程序响应时间的用户,更容易碰到TW配置丢失的情况。而因为TW读写配置文件的时间并非十分固定,因此有时能正常读写完毕,此时一切正常,故丢失配置这个bug未必每次都能重现。
解决方法,建议开发组把“未关闭的标签页面”的信息写到一个单独的文件例如什么OldUrl.ini啊的,避开关闭时对TheWorld.ini的写入,就可以解决这个问题了。那样即使丢失,也只是丢失了“未关闭的标签页面”的信息而已,而不会影响这么大。进一步的话建议把写入的方式改为,每次打开关闭一个标签,就读写“未关闭的标签页面”信息文件的临时副本,正常关闭时用临时副本覆盖掉原信息文件,这样如果TW非正常退出,信息也会保留在临时副本里(参考office的做法)
最后,希望TW继续进步,越来越完善。
[ 本帖最后由 hzggz 于 2007-7-2 23:32 编辑 ] |
|