Открытие XML-файла в новом потоке? - PullRequest
1 голос
/ 13 января 2012

Привет У меня возникли проблемы, мне было интересно, как читать 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 ', потому что он используется другим процессом.

Но если это не отдельный поток, он работает нормально?

Спасибо за помощь, если этоне может быть сделано, как это, как я могу открыть файл, не делая мою программу Freeze, пока файл не был открыт?

еще раз спасибо.

Ответы [ 2 ]

1 голос
/ 13 января 2012

Я взял ваш пример кода и не столкнулся с какими-либо проблемами. Однако я получил то же исключение, когда нажал клавишу ввода во время чтения файла. (т.е. дважды нажмите клавишу ввода) Возможно, у вас есть два обработчика для клавиши Enter, которые оба инициируют открытие этого файла. Можете ли вы установить точку останова в операторе File.Open и посмотреть, сколько раз он был достигнут до возникновения исключения.

0 голосов
/ 13 января 2012

У вас есть код или процесс, который пишет в файл?Если это так, вам нужно сделать некоторую блокировку:

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
        }
    }
}
...