Можно ли как-то сделать так, что бы не вызывался Dispose при использовании оберток StreamReader / StreamWriter?
Т.е., допустим, я открыл файл, далее обернул его в StreamReader, прочитал данные, далее мне нужно записать данные, я закрываю ридер, и открываю райтер, при этом если я закрою ридер, то закроется поток который я в него передал.
Т.е. добиться что-то вроде такого:
using(FileStream clientStream = client.GetStream())
{
using (TextReader reader = new StreamReader(clientStream, Encoding.UTF8))
{
List<string> clientRequestData = new List<string>();
while (reader.Peek() > -1)
{
string line = reader.ReadLine();
clientRequestData.Add(line);
Console.WriteLine(line);
}
}
using (StreamWriter writer = new StreamWriter(clientStream, Encoding.UTF8))
{
writer.WriteLine("SomeData");
writer.WriteLine();
writer.WriteLine();
}
}
В StreamReader/StreamWriter есть конструкторы с параметром leaveOpen. Он делает то, что вам нужно.
https://docs.microsoft.com/en-us/dotnet/api/system.io.streamreader.-ctor?view=netframework-4.8#System_IO_StreamReader__ctor_System_IO_Stream_System_Text_Encoding_System_Boolean_System_Int32_System_Boolean_
Сборка персонального компьютера от Artline: умный выбор для современных пользователей