c# 解决User.config文件损坏的问题

1.原因

在写入.config文件时,软件异常退出,或者电脑关机,会发生User.config文件损坏的问题

2.解决方法

(1)去除经常写入.config文件的程序,会降低发生概率;

(2)在OnStartup启动执行函数中,加入.config文件监测,如果可以正常打开,则做一下备份,如果文件出现了损坏,则使用备份的文件。

3.代码

/// <summary>
/// 监测配置文件是否损坏
/// </summary>
private void MonitorFileIsDamage()
{
            string configPathBackup;
            try
            {
                Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
                configPathBackup = config.FilePath + ".bak";
                config.SaveAs(configPathBackup, ConfigurationSaveMode.Full, true);
            }
            catch (ConfigurationErrorsException ex)
            {
                string filename = ex.Filename;
                configPathBackup = filename + ".bak";
                //_logger.Error(ex,"Cannot open config file");

                if (File.Exists(filename) == true)
                {
                    Logger.err("Config file {0} content:{ 1} "+ filename, File.ReadAllText(filename));
                    File.Delete(filename);

                    if (!string.IsNullOrEmpty(configPathBackup) && File.Exists(configPathBackup))
                    {
                        File.Copy(configPathBackup, filename, true);
                    }

                }
                Needle_Manage_System.Properties.Settings.Default.Reload();
                //软件重启
                Process.Start(Application.ResourceAssembly.Location);
                Application.Current.Shutdown();
                //_logger.Error("Config file {0} does not exist", filename);
            }
        }

protected override void OnStartup(StartupEventArgs e)
{
            //监测config文件
            MonitorFileIsDamage();

}

4.其它

如有不足,请指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值