У меня проблемы с записью в поток. Я думаю, что понимаю почему, но я не совсем понимаю, как обойти эту проблему. См. Пример кода ниже
Требование, чтобы вызывающий модуль Writer в приведенном ниже примере управлял потоком, а не Writer.
это пример кода в вызывающей стороне:
using (Stream stream1 = new MemoryStream())
using (Stream stream2 = new FileStream("ex.txt", FileMode.Create))
{
//example 1:
Writer writer1 = new Writer();
writer1.WriteToStream(stream1);
//example 2:
Writer writer2 = new Writer();
writer2.WriteToStream(stream2);
}
Это класс Writer
: он должен оставлять поток открытым после его завершения.
public class Writer
{
public void WriteToStream(Stream destination)
{
Write(destination, "abc");
}
private void Write(Stream destination, string data)
{
Streamwriter sw = new StreamWriter(destination);
sw.Write(data);
}
}
в этой настройке ничего не отображается в MemoryStream
или "ex.txt"
. Я предполагаю, потому что, как только вы выйдете из метода Write
, StreamWriter
выйдет из контекста, и поток уйдет с ним, прежде чем он получит возможность записи в файл.
Если я изменю метод Write
в приведенном ниже примере, я могу получить что-то, чтобы показать в файле, но поток в конечном итоге закрывается, что противоречит требованию:
private void Write(Stream destination, string data)
{
using(Streamwriter sw = new StreamWriter(destination))
{
sw.Write(data);
}
}
Итак, как мне записать строку в поток (Память файла), без закрытия потока в процессе. спасибо