嗨,我遇到了一些麻烦,我很想知道如何在一个新线程中读取一个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',因为它正由另一个进程使用。
但是当它不是它自己的一个线程时它可以正常工作吗?
感谢您的帮助,如果不能这样做,如何在没有让我的程序冻结直到文件打开之前打开文件?
再次感谢。答案 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
}
}
}