在新线程中打开XML文件?

时间:2012-01-13 03:15:00

标签: c# xml multithreading filestream

嗨,我遇到了一些麻烦,我很想知道如何在一个新线程中读取一个XML文件基本上我正在尝试做什么:

//This is ran when the user presses the Enter Key
Thread LoadThread = new Thread(new ThreadStart(Test));
LoadThread.Start();

private static void Test()
{
    FileStream stream = File.Open("TEST_1.xml", FileMode.Open);
    //----
    //  Code Using File (I know this stuff works)
    //----
    stream.Close();
}

这是错误。

Directory \ TEST_1.xml',因为它正由另一个进程使用。

但是当它不是它自己的一个线程时它可以正常工作吗?

感谢您的帮助,如果不能这样做,如何在没有让我的程序冻结直到文件打开之前打开文件?

再次感谢。

2 个答案:

答案 0 :(得分:1)

我拿了你的示例代码并没有遇到任何问题。但是,当我在读取文件时按下回车键时,我确实得到了相同的异常。 (即按下回车键两次)是否可能有两个处理器用于Enter键,这两个处理器都触发此文件被打开。你可以在File.Open语句上放置一个断点,看看在异常发生之前它被击中了多少次。

答案 1 :(得分:0)

您是否有代码或正在写入文件的进程?如果是这样,你需要做一些锁定:

private static object _fileLock = new object();

private static void Test()
{
    lock(_fileLock)
    {
        using(FileStream stream = File.Open("TEST_1.xml", FileMode.Open))
        {
            //Stuff you know works
        }
    }
}