- Регистрация
- 18.05.2017
- Сообщения
- 230
- Реакции
- 28
- Баллы
- 28
В общем есть большой проект полностью написанный на c#, возможно я где-то что-то не понимаю, отсюда и данная ошибка, посоветуйте в какую сторону вообще глядеть...
В проекте создал отдельные объекты синхронизации, для записи информации в файлы, грубо говоря под каждый файл свой объект типа
Ну и в дальнейшем когда нужно записываю данные в файл таким образом:
И по какой-то причине, во многопотоке иногда получаю сообщения с ошибкой
В чем может быть проблема?
В проекте создал отдельные объекты синхронизации, для записи информации в файлы, грубо говоря под каждый файл свой объект типа
C#:
public static object lock1 = new object();
public static object lock2 = new object();
public static object lock3 = new object();
Ну и в дальнейшем когда нужно записываю данные в файл таким образом:
C#:
lock (CommonCode.lock1) File.AppendAllText(project.Directory + "\\trash1.txt", str + Environment.NewLine);
lock (CommonCode.lock2) File.AppendAllText(project.Directory + "\\trash2.txt", str + Environment.NewLine);
И по какой-то причине, во многопотоке иногда получаю сообщения с ошибкой
C#:
Выполнение действия CSharp OwnCode: test. Процесс не может получить доступ к файлу "C:\Users\Administrator\Desktop\test\trash1.txt", так как этот файл используется другим процессом.
В чем может быть проблема?






Хотя есть наверное способы сделать это элегантно, засунуть в using мб, но я что-то без идей, навыков нема) А сделать проверку на занятость файла целесообразно? и возможно ли? Ну или паузу накрайняк 500мс поставить, после File.AppendAllText ?