Console.ReadKey () не работает после перенаправления консоли и восстановления обратно в стандартный вывод - PullRequest
0 голосов
/ 21 сентября 2019

Когда я перенаправляю 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 и периодическую очистку потока.

...