2011-12-19 34 views
3

我正在實施一種機制來檢測應用程序啓動時vb中損壞的user.config文件。vb.net my.Settings.Reload()不起作用

我在初始化任何事情之前在應用程序的開始執行此操作。

如果試圖訪問exception時,我用備份的最後一次已知的良好副本替換該文件。

替換損壞的文件和身體檢查,我們有一個很好的文件後,我運行代碼:

My.Settings.Reload() 

這應該是根據定義,重新加載新的文件。然而,由於配置文件錯誤,它不能正常工作,應用程序仍然崩潰。

什麼是reload()方法不加載新的配置文件。

+0

我的水晶球說,有在替換user.config代碼中的錯誤。這可能是對的,因爲找到正確的文件路徑非常困難。你不能從LocalFileSettingsProvider中取出它。郵政編碼。 – 2011-12-19 21:33:59

回答

0

那麼,我能想到運行它的唯一方法是在一個不在UI上的新線程中。

Dim t as new threading.thread(addressof tt) 

sub tt() 
'replace config file and reload 
end sub 

就用t.Start()

+0

試過這個,但它沒有工作。顯然,似乎發生的情況是,一旦System.Configuration引發錯誤,您無法爲當前實例調用my.settings.reload()方法。當我分叉並在不同的線程上完成所有事情時,我仍然指my.settings的同一個實例。我目前使用的解決方案是將此檢查作爲應用程序啓動時的第一個操作之一,如果user.config已損壞,我將其替換,結束應用程序的當前實例並啓動一個新的應用程序。 – 2011-12-20 21:30:03

+0

如果最終用戶沒有太多麻煩,你可以製作一個單獨的exe文件或批處理文件來運行修復錯誤。 – Cody8295 2011-12-20 22:29:57