Вам не нужно вызывать Flush
в потоке памяти, потому что операция ничего не делает. Если вы посмотрите на источник, реализация пуста. Вам нужно перемотать поток после записи.
Однако вам необходимо очистить StreamWriter
, чтобы все данные были перенесены в поток памяти, прежде чем вы начнете его копировать.
Вы можете использовать этот шаблон с StreamWriter
писать в поток памяти, чтобы избежать явной гиперемии:
MemoryStream memStream = ...
using (StreamWriter wr = new StreamWriter(memStream)) {
... // Do the writing
}
memStream.Position = 0; // Rewind
// At this point `memStream` has all data pushed into it,
// and is positioned at zero, so it's ready to be copied.
Что является причиной этого вопроса? Вы можете решить проблему, которую пытаетесь решить? Если это вопрос любопытства, то нет, вам не нужно очищать текущие данные перед использованием CopyTo для любого потока. –