0

私は今C#を学んでいて、ファイルが存在するかどうかを確認したいです。存在する場合は、xml ファイルを読み込んで書き込む必要があります。存在しない場合は作成し、その後 xml ファイルをロードして書き込む必要があります。しかし、ボタンをクリックすると、エラーが発生します。

「別のプロセスで使用されているため、プロセスはファイルにアクセスできません。」

ここで私のコードを見ることができます:

private void btnSave_Click(object sender, EventArgs e)
{
    XElement xmlnode = new XElement("Namespace",
            new XElement("RandomText1", textBox1.Text),
            new XElement("RandomText2", textBox2.Text),
            new XElement("RandomText3", textBox3.Text)
    );

    XElement xmlFile;
    try
    {
        xmlFile = XElement.Load("testsave.xml");
        xmlFile.Add(xmlnode);
    }
    catch (XmlException)
    {
        xmlFile = new XElement("Test", xmlnode);
    }

    xmlFile.Save("testsave.xml");
    DataSet ds = new DataSet();
    ds.ReadXml("testsave.xml");
    DataTable dt = ds.Tables[0];
    dataGridView1.DataSource = dt;
}

private void Form1_Load(object sender, EventArgs e)
{
    if (!File.Exists("testsave.xml"))
    {
        File.Create("testsave.xml");
    }
}
4

2 に答える 2

6

問題はファイルを作成し、開いたFile.Createものを返します。FileStreamそのため、後でアクセスしようとすると例外が発生します。後で使用する前に閉じる必要があります。

これを試して

using (File.Create("testsave.xml"))
{ }

または

File.Create("testsave.xml").Close();
于 2013-09-24T08:12:32.907 に答える