C# - Settings.Default.Save() 非常慢

C# - Settings.Default.Save() is very slow

我想在程序关闭时保存一些 UI 更改。我读过,最简单的方法之一就是设置。我想我会在程序关闭时将这些更改保存到设置中,而不是每次用户更改这些设置时都保存它。所以,我有这个:

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    { 
        Properties.Settings.Default.PostProcessSubs = checkBox_PPSubs.Checked;
        Properties.Settings.Default.Save();
    }

这只是保存该复选框默认情况下是打开还是关闭。但是,当我有这个时,当我按 X 关闭它时,应用程序会挂起一两秒钟。如果我注释掉 save() 命令,它会正常关闭,但当然不会保存更改。除此之外,一切正常,所以我觉得这个过程这么慢很奇怪。

顺便说一句,我的设置没有臃肿之类的,我只有两个布尔值和两个小字符串。

编辑:这仅在 运行 通过 Start Without Debugging 时发生。 运行 通过调试或通过发布工作正常。还是很奇怪。

Edit2:不,仍然会发生。慢如地狱。

好吧,我解决了这个,我感觉很弱智。但是如果有人有类似的问题,这里有一个指针。 所以,发生的事情是我的配置文件是 16 MB。为什么?好吧,其中一个配置是可执行文件的路径。但是,我用于该可执行文件的代码不正确,因为我没有考虑程序的其他部分就复制了它。我有这个……很难过

 Properties.Settings.Default.ProgramPath = 
System.IO.File.ReadAllText(openFileDialog1.FileName.ToString());

明明应该是

 Properties.Settings.Default.ProgramPath = 
openFileDialog1.FileName.ToString();

当然,我的原始代码是将整个可执行文件转换为文本,并将其保存到配置文件中。配置文件变得臃肿,即使我不再使用那部分代码,配置文件也已经臃肿了。因此,每当我保存任何其他配置时,不是保存几 KB 的文件,而是保存 16 MB 的文件。每次。所以,是的...

TLDR:检查您的配置文件大小...可能由于某种原因而过大。