6

Я использую метод Console.SetOut для записи всех моих файлов Console.Out.WriteLines в файл, и это работает. Единственная проблема заключается в том, что он только записывает все в текстовый файл, когда я закрываю приложение вместо его записи всякий раз, когда происходит Console.Out.WriteLine. Любые идеи о том, как я могу это понять?Console.SetOut to StreamWriter, постоянно писать в текстовый файл

Как это сделать: Перед применением. Run();

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

После Application.Run():

writer.Dispose(); 

Спасибо.

ответ

11

StreamWriter будет буферизировать его содержимое по умолчанию. Если вы хотите, чтобы очистить буфер необходимо вызвать метод Flush:

Очищает все буферы для текущего автора и вызывает какие-либо буферизованные данные должны быть записаны в основной поток.

+0

Я второй это ... –

+0

Да, это путь. Большое спасибо! – Fverswijver

1

Если вы не хотите, чтобы каждый раз вручную вызывать флеш, вам может потребоваться реализовать свой собственный объект, созданный TextWriter, для этого.

11

У StreamWriter есть свойство AutoFlush. Если установлено значение true, вы должны получить нужный результат.

0

Чтобы очистить буфер, вы можете сделать writer.Close();

Смежные вопросы