на новой строке может быть желательно, но это еще одна хитрая банка червей, чтобы выработать.

ужен совет о том, как сделать так, чтобы мое консольное приложение C # отображало текст для пользователя через стандартный вывод, и в то же время оно было доступно позже. Фактическая функция, которую я хотел бы реализовать, - это сбросить весь выходной буфер в текстовый файл в конце выполнения программы.

Обходной путь, который я использую, пока не нахожу более чистого подхода, заключается в создании подклассаTextWriter переопределяя методы записи, чтобы они одновременно записывали в файл и вызывали исходный модуль записи stdout. Что-то вроде этого:

public class DirtyWorkaround {
  private class DirtyWriter : TextWriter {
    private TextWriter stdoutWriter;
    private StreamWriter fileWriter;

    public DirtyWriter(string path, TextWriter stdoutWriter) {
      this.stdoutWriter = stdoutWriter;
      this.fileWriter = new StreamWriter(path);
    }

    override public void Write(string s) {
      stdoutWriter.Write(s);

      fileWriter.Write(s);
      fileWriter.Flush();
    }

    // Same as above for WriteLine() and WriteLine(string),
    // plus whatever methods I need to override to inherit
    // from TextWriter (Encoding.Get I guess).
  }

  public static void Main(string[] args) {
    using (DirtyWriter dw = new DirtyWriter("path", Console.Out)) {
      Console.SetOut(dw);

      // Teh codez
    }
  }
}

Посмотрите, что он пишет и сбрасывает файл все время. Я хотел бы сделать это только в конце выполнения, но я не мог найти способ получить доступ к выходному буферу.

Также извините за неточности с приведенным выше кодом (пришлось его написатьдля этого случая, извиняюсь ;).

Ответы на вопрос(6)

Ваш ответ на вопрос