我一直在
进程无法访问另一个进程正在使用它的文件
有人可以告诉我出了什么问题吗?
public void SaveCheckedChoices()
{
using(StreamWriter writer = new StreamWriter(dataFile))
{
try
{
// Autorun
writer.WriteLine(sublimeAutorun);
writer.WriteLine(sublimePackagesAutorun);
writer.WriteLine(sharpDevelopAutorun);
writer.WriteLine(eclipseAutorun);
writer.WriteLine(outlookAutorun);
writer.WriteLine(youtubeAutorun);
writer.WriteLine(githubAutorun);
writer.WriteLine(trelloAutorun);
File.SetAttributes(dataFile, FileAttributes.Hidden);
}
finally
{
writer.Close();
}
}
}
public void LoadCheckedChoices()
{
StreamReader sr = new StreamReader(dataFile);
// Autorun
sublime.Checked = Convert.ToBoolean(sr.ReadLine());
sublimePackages.Checked = Convert.ToBoolean(sr.ReadLine());
sharpDevelop.Checked = Convert.ToBoolean(sr.ReadLine());
eclipse.Checked = Convert.ToBoolean(sr.ReadLine());
outlook.Checked = Convert.ToBoolean(sr.ReadLine());
youtube.Checked = Convert.ToBoolean(sr.ReadLine());
github.Checked = Convert.ToBoolean(sr.ReadLine());
trello.Checked = Convert.ToBoolean(sr.ReadLine());
sr.Close();
}
我确保文件已创建,并且唯一正在运行的是SharpDevelop并且它仍然给我错误,有人可以告诉我问题是什么。
答案 0 :(得分:0)
File.SetAttributes(dataFile, FileAttributes.Hidden);
必须移至writer.Close();
之后。我认为它需要独家访问该文件
您也可以在第二个函数中使用File.ReadAllLines
。
这是我答案中最重要的部分。从来没有,永远,我必须坚持,永远不要隐藏配置文件; EVER。它会回来困扰你。
修改强>
要获得正确的序列化,请阅读xml或json或documentation的newtonsoft.json