System.ObjectDisposedException: "Невозможно записать в закрытый TextWriter." Ошибка в SetOut
Я пишу программу, которая может просматривать все файлы в папке, а затем записывать вывод консоли в новый текстовый файл, но когда я запускаю программу после записи 1 строки, она выдает ошибку, говорящую
System.ObjectDisposedException: "Невозможно записать в закрытый TextWriter."
Вот код:
string[] files = Directory.GetFiles(@"C:\CSA FIles(test)\", "*.*",
SearchOption.AllDirectories);
foreach (string file in files)
{
if (File.GetLastWriteTime(file)
< DateTime.Now.AddMonths(-3))
{
Console.WriteLine(file);
using (StreamWriter writer = new StreamWriter(@"C:\for checking\sample.txt"))
{
Console.SetOut(writer);
Act();
}
void Act()
{
Console.WriteLine(file);
}`
1 ответ
Решение
Как говорит Рон в своем комментарии, StreamWriter
объект утилизируется, пока еще используется Console
, Лучше всего восстановить исходный поток перед вашим StreamWriter
расположен.
using (StreamWriter writer = new StreamWriter(@"C:\for checking\sample.txt"))
{
var originalStream = Console.Out;
Console.SetOut(writer);
Act();
Console.SetOut(originalStream);
} //writer object is disposed here