Я отлаживаю мое консольное приложение с перенаправленным вводом из файла ( Параметры отладки / запуска / Аргументы командной строки < "filename.in"
). Это означает, что я не могу использовать обычный ReadLine()
/ Read()
/ ReadKey()
, чтобы держать окно консоли открытым после выполнения, потому что они будут пытаться прочитать входные данные из файла.
Мое текущее решение - это Sleep()
, можете ли вы предоставить лучшие альтернативы?
using System;
using System.Diagnostics;
using System.Threading;
using static System.Console;
class Test
{
static void Main(string[] args)
{
WriteLine("some output");
if (Debugger.IsAttached) Thread.Sleep(Timeout.Infinite);
}
}
Вместо проверки отладчика или #if DEBUG
я также мог бы проверить наличие дополнительного аргумента командной строки, который я передаю только из Visual Studio. Преимущество в том, что он будет работать при запуске без отладки (но тогда я не знаю, как перенаправить ввод).
Другая альтернатива - это точка останова в конце, но затем мое окно переводится на задний план и мне нужен щелчок, чтобы просмотреть его.
Последний вариант также перенаправляет вывод и просматривает его на вкладке файла. Но почему-то нет способа легко обновить sh.
Начиная с VS2019, появилась новая опция Отладка / Общие / Автоматическое закрытие консоли , но отмена снятия не кажется работать, когда ввод перенаправлен тоже. Я говорю, что это ошибка.
Так что я ищу лучшие пути. Дополнительные очки за то, что вам не нужно using
, как указано выше:)