FileStream stream = new FileStream("test",FileMode.Create);
Stream t = new BufferedStream(stream, 8);
BinaryWriter writer = new BinaryWriter(t);

writer.Write(1);
writer.Write(2);
writer.Write(3);
// wywolanie flush nie ma znaczenia
//t.Flush();
Console.WriteLine(t.Length);

O ile dobrze rozumie, gdy liczba bajtów w buforze BufferedStream przekroczy buffer size tu 8 to powinna zostać wywołana metoda Flush(), co wiązać się będzie z zapisaniem danych na dysk, więc dlaczego tak sie nie dzieje? t.Length zwraca 12, a dane w pliku, pojawiają się, gdy wywołam Close/Dispose. Wiem, że powinienem używać using() {}, ale to nie jest przedmiotem pytania. ;)