環境完整的結果 - C#,.NET 4.0,WPF,VS2010App.Current.Shutdown不讓DataSet.WriteXml腐敗配置文件
我有一個使用鍵盤鉤子來檢測應用程序時的四個組合鍵被按下。當發生這種情況時,它調用Configuration.Save(),它調用myConfigDataSet.WriteXml(myConfigFile)。然後在下一行調用App.Current.Shutdown()。
大約一半的時間按預期工作。但很多時候,它會將XML內容直接插入到先前存在的配置文件的中間,導致數據損壞。
我能夠通過解決上述問題...
如果(File.Exists(myConfigFile)){File.Delete(myConfigFile)}
...就行正上方調用myConfigDataSet.WriteXml(myConfigFile)
但現在很多時候它只是寫一個0KB大小的文件。我非常確定,我的所有問題都是由App.Current.Shutdown()引起的,而不是等待myConfigDataSet.WriteXml(myConfigFile)的調用完成。
在文件寫入磁盤之前,這個調用是否應該阻止執行? ...顯然不是!!!
作爲一種解決方法,我已經嘗試插入Thread.Sleep(1000)在App.Current.Shutdown之前創建1秒的延遲。但現在有時應用程序錯誤與「StackOverFlow」例外...... !!!
你們會推薦作爲解決方法或解決方法嗎?我究竟做錯了什麼?