0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 93
1

Процесс не может получить доступ к файлу

03.04.2011, 18:04. Показов 2920. Ответов 3
Метки нет (Все метки)

Здравствуйте, в программе 2 потока, оба они работают с 1 текстовым файлом, так вот постоянно вылазит такая ошибка.

System.IO.IOException: Процесс не может получить доступ к файлу "1.txt", так как этот файл используется другим процессом.

это в 1 потоке,
C#
1
2
3
4
5
6
7
StreamWriter bw;
FileInfo b_nick = new FileInfo(Environment.CurrentDirectory + "1.txt");
 
bw = b_nick.AppendText();
bw.WriteLine(banlist_nick[b]);
bw.Close();
bw.Dispose();
это в другом
C#
1
2
3
4
BanList.bw = BanList.b_nick.AppendText();
BanList.bw.WriteLine(ban_splitInput[5]);
BanList.bw.Close();
BanList.bw.Dispose();
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2011, 18:04
Ответы с готовыми решениями:

Процесс не может получить доступ к файлу
Здравствуйте, в чем проблема? Когда затрагивает сохранение, выдает: private void...

Процесс не может получить доступ к файлу
Задача: взять картинку, изменить её размер, сохранить её под тем же именем. Т.к. напрямую...

Процесс не может получить доступ к файлу
Здравствуйте, как после создания файла прочитать или записать в текстовый файл, пишет, что файл не...

Процесс не может получить доступ к файлу
Проблема вот какая: Файл создаеться после чего появляеться ошибка "Процес не может получить доступ...

3
Почетный модератор
Эксперт .NET
8700 / 3652 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
03.04.2011, 18:14 2
Потому-что один из потоков не успевает закрыть файл, как к нему уже начинает обращаться другой. Используй синхронизацию.

Самый примитивный вариант:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        static object lockObj;
 
        static void Main ( string[] args ) {
            lockObj = new object();
            new Thread(D0).Start();
            new Thread(D0).Start();
        }
 
        static void D0() {
            lock(lockObj) {
                var fm = (File.Exists("C:\\temp.d") ? FileMode.Append /* Open */ : FileMode.Create);
                using (var bw = new BinaryWriter(File.Open("C:\\temp.d", fm, FileAccess.Write))) {
                    bw.Write("123 432 12 31 52 35 235 23 5 325 12 34 123");
                }
            }
        }
Тут кто первый стартует тот и запишет первый. Так сказать, кто первый встал того и тапки
2
6242 / 3543 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
03.04.2011, 18:14 3
Вам на русском дали ответ. Что не понятно?
0
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 93
03.04.2011, 18:37  [ТС] 4
Цитата Сообщение от Петррр Посмотреть сообщение
Вам на русском дали ответ. Что не понятно?
Это к чему вообще написано?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2011, 18:37

Процесс не может получить доступ к файлу
при изменении статуса пинга выдаётся ошибка: Процесс не может получить доступ к файлу...

Процесс не может получить доступ к файлу
Как исправить ошибку? LoadVideo: Процесс не может получить доступ к файлу "C:\Temp\preview.avs",...

Процесс не может получить доступ к файлу
Такая проблема. Открываю файл для чтения,и он разносит информацию по textbox'ам.Вот код для чтения:...

FileSystemWatcher - Процесс не может получить доступ к файлу
Отслеживаю появление *.xml файла в каталоге. При появлении файла необходимо запомнить полный путь к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.