我正在尝试保存和加载选择,它一遍又一遍地给我同样的错误

时间:2017-09-21 19:34:21

标签: c# ioexception

我一直在

  

进程无法访问另一个进程正在使用它的文件

有人可以告诉我出了什么问题吗?

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并且它仍然给我错误,有人可以告诉我问题是什么。

1 个答案:

答案 0 :(得分:0)

File.SetAttributes(dataFile, FileAttributes.Hidden);

必须移至writer.Close();之后。我认为它需要独家访问该文件 您也可以在第二个函数中使用File.ReadAllLines

这是我答案中最重要的部分。从来没有,永远,我必须坚持,永远不要隐藏配置文件; EVER。它会回来困扰你。

修改
要获得正确的序列化,请阅读xmljsondocumentationnewtonsoft.json