环境 - C#、.NET 4.0、WPF、VS2010
我有一个应用程序,它使用键盘挂钩来检测何时按下四个键的组合。发生这种情况时,它调用 Configuration.Save(),后者调用 myConfigDataSet.WriteXml(myConfigFile)。然后在下一行调用 App.Current.Shutdown()。
大约有一半的时间可以按预期工作。但很多时候,它会将 XML 内容插入到先前存在的配置文件的中间,从而导致数据损坏。
我能够通过使用...解决上述问题
if(File.Exists(myConfigFile)) { File.Delete(myConfigFile) }
...在调用 myConfigDataSet.WriteXml(myConfigFile) 正上方的那一行
但现在很多时候它只是写入一个 0KB 大小的文件。我很确定我所有的问题都是由 App.Current.Shutdown() 没有等待对 myConfigDataSet.WriteXml(myConfigFile) 的调用完成引起的。
在文件写入磁盘之前,此调用不应该阻止执行吗?...显然不是!!!
作为一种解决方法,我已经尝试在 App.Current.Shutdown 之前插入 Thread.Sleep(1000) 以创建 1 秒的延迟。但现在有时应用程序会因“StackOverFlow”异常而出错......!!!
你们会推荐什么作为解决方案或解决方法?我究竟做错了什么?