1 打开程序,马上关闭,发现正确生成配置文件。
2 打开程序,点击“打开文件”按钮,选择一个文件,然后关闭程序,却没有生成配置文件,并且无任何报错。
3 打开程序,点击“打开文件”按钮,选择一个文件,然后不点确定而是点取消,则此时关闭程序仍能正确产生配置文件。
事实上是经过艰苦的调试才定位到openfiledialog.showdialog这个函数调用点。程序运行而未生成配置文件时,却没有任何报错,到底openfiledialog.showdialog做了什么导致BinaryFormatter不能正常工作? 快要绝望之际,在StackOverflow终于搜索到一篇类似现象的文章,一句话解决了问题。 原来问题就在偷懒使用的未加路径的配置文件名上,未加路径,则程序使用默认路径,但这个默认路径在使用openfiledialog选择文件时,被更改了。所以事实就是BinaryFormatter仍然正确的生成了文件,只不过保存在了openfiledialog打开的那个文件的目录下了。 想起前一天晚上为这问题反复测试时,曾经在选择文件对话框里看到过配置文件的名字,当时不在意,以为什么时候不小心拷贝到了那里,现在想起来,如果当时警觉到那个现象,也许很快就找到原因了。 OK,把配置文件名前面加上application.startuppath,问题解决了。
原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/543.html