6

Uso il metodo Console.SetOut per scrivere tutte le mie Console.Out.WriteLines in un file e questo funziona. L'unico problema è che scrive tutto solo sul file di testo quando chiudo la mia applicazione invece di scriverla ogni volta che si verifica una Console.Out.WriteLine. Qualche idea su come posso rendermene conto?Console.SetOut to StreamWriter, scrittura continua su file di testo

Come faccio: Prima di Application.Run();

FileStream writerOutput = new FileStream("Logging_Admin.txt", FileMode.Append, FileAccess.Write); 
StreamWriter writer = new StreamWriter(writerOutput); 
Console.SetOut(writer); 

Dopo Application.Run():

writer.Dispose(); 

Grazie.

risposta

11

StreamWriter memorizza il contenuto per impostazione predefinita. Se si vuole svuotare il buffer è necessario chiamare il metodo Flush:

Azzera tutti i buffer per lo scrittore attuale e provoca tutti i dati nel buffer per essere scritti nel flusso sottostante.

+0

I second this ... –

+0

Sì, questa è la strada da percorrere. Molte grazie! – Fverswijver

1

Se non si desidera richiamare il flush ogni volta manualmente, è possibile prendere in considerazione l'implementazione del proprio oggetto derivato da TextWriter per farlo automaticamente.

11

StreamWriter ha una proprietà AutoFlush. Se impostato su true, dovresti ottenere il risultato che ti serve.

0

Per svuotare il buffer, è possibile eseguire writer.Close();