Я делаю проект Форма Windows для назначения в Uni, я хочу искать уже созданный текстовый файл в соответствии с именем и фамилией, а затем писать дополнительную информацию, если имя и фамилия существуют. У меня есть код, созданный и не отображающий ошибок, однако, когда я запускаю и пытаюсь добавить информацию, мне предоставляется ошибка, которая по существу говорит о следующем процессе (писатель Streamreader не может получить доступ к файлу, поскольку он уже используется другим процессом) Я предполагаю, что этот процесс является streamreader, я пытался его кодировать, чтобы прекратить чтение безрезультатно. Я в течение первых трех месяцев изучаю кодирование и, по возможности, порекомендую некоторую помощь, я разместил фрагмент кода ниже.C# как прекратить streamreader
//check if there is a file with that name
if (File.Exists(sFile))
{
using (StreamReader sr = new StreamReader(sFile))
{
//while there is more data to read
while (sr.Peek() != -1)
{
//read first name and last name
sFirstName = sr.ReadLine();
sLastName = sr.ReadLine();
}
{
//does this name match?
if (sFirstName + sLastName == txtSearchName.Text)
sr.Close();
}
//Process write to file
using (StreamWriter sw = new StreamWriter(sFile, true))
{
sw.WriteLine("First Name:" + sFirstName);
sw.WriteLine("Last Name:" + sLastName);
sw.WriteLine("Gender:" + sGender);
}
Где находится закрывающая скоба для вашего StreamReader. Директива using будет утилизировать средство чтения потоков и освободить его блокировку в файле, но похоже, что вы не закрываете его, пока не откроете автора? – Wheels73
Прочитайте свой входной файл, напишите во временный файл, затем раздавите свой входной файл с помощью файла temp. –
Вы уверены, что выполнит эту часть кода? Потому что кажется, что вы пытаетесь одновременно читать и писать в один и тот же файл. (Похоже на ужасную идею) –