Когда я перенаправляю stdout
и stderr
в логгер и затем восстанавливаю потоки в их исходное состояние, Console.ReadKey
больше не работает.
Я использую следующий код для перенаправления:
public static void Foo()
{
//Logger init...
UnmanagedConsoleLogListener consoleLogListener = new UnmanagedConsoleLogListener();
ConsoleRedirector.attach(consoleLogListener);
//some work to do
ConsoleRedirector.detatch();
System.Console.WriteLine("Done.");
System.Console.ReadKey(); //This does not work, whatever I press, it does not go beyond this line
}
ConsoleRedirector
основан на следующем коде:
Перенаправление собственного dll stdout / stderr изв C #
https://pastebin.com/f3eda7c8
https://github.com/neolode/gabesworkshop/tree/master/miniws/ConsoleReading
, который использует класс AnonymousPipeClientStream
и периодическую очистку потока.