У меня есть приложение Windows Forms, которое использует 2 формы, обе из которых записываются в отдельные файлы (пути к файлам задаются путем включения строк в текстовые поля в форме).
Для form1 у меня есть ряд функций, которые записывают данные в файл при нажатии различных кнопок. В этом случае я использовал метод StreamWriter consoleFile = new StreamWriter(File.OpenWrite(fileName));
для первой записи в файл и метод StreamWriter consoleFile = File.AppendText(fileName);
для всех последующих. Это сработало нормально.
Когда дело дошло до реализации той же функции для Form2, основное отличие состоит в том, что весь текст пишется сразу (одна функция, содержащая четыре подфункции, чтобы попытаться сохранить код в чистоте). Я поступил так...
public void writeChecklistToFile()
{
//open new file for writing
StreamWriter checklistFileStart = new StreamWriter(File.OpenWrite(getChecklistFile()));
checklistFileStart.WriteLine("Pre-Anaesthetic Checklist\n");
//sub-functions (one for each section of list)
//append tool used in separate functions
//StreamWriter checklistFile = File.AppendText(getChecklistFile());
writeAnimalDetails();
writeAnimalHistory();
writeAnimalExamination();
writeDrugsCheck();
}
Затем каждая из подфункций содержит показанную выше переменную appendText:
public void writeAnimalDetails()
{
StreamWriter checklistFile = File.AppendText(getChecklistFile());
//...
}
Всякий раз, когда я нажимаю кнопку, которая вызывает основную функцию, возникает исключение в первом методе File.AppendText(). В нем говорится, что файл назначения недоступен, поскольку он уже используется в другом процессе.
Предположительно, это должен быть OpenWrite(), поскольку до этого он нигде не использовался, но я не понимаю, почему эта ошибка возникает в моей форме2, а не в форме1!
Если бы кто-нибудь мог помочь мне обойти это или указать мне более простой способ сделать это, я был бы очень признателен.
Спасибо
Отметка