Я написал консольное приложение .NET (на C#) на v4.5.1. Мой Main
метод выглядит следующим образом:Использование события CancelKeyPress в консольном приложении .NET
public static void Main(string[] args)
{
Console.CancelKeyPress += delegate
{
CancelToken.Cancel();
};
var kbTask = Task.Run(async() =>
{
while (true)
{
await ProcessCommand(Console.ReadLine());
}
}, CancelToken.Token);
kbTask.Wait(CancelToken.Token);
}
Один из возможных команд (обрабатывается ProcessCommand
) вызывает длительный процесс, который я хотел бы, чтобы иметь возможность отменить с помощью CTRL + C через Console.CancelKeyPress
делегата.
Но когда я это делаю, Visual Studio открывает вкладку, в которой говорится, что «mscorlib.dll не загружен», а затем ничего не делает - консоль остается открытой, но не отвечает.
Я также пытался запустить приложение вне отладки, но не могу найти исполняемый файл.
Вам нужно проверить состояние токена отмены в цикле 'while' после разрыва, когда он установлен. – Sean
Crystal Ball говорит, что вы используете Avast. Удалите его как можно скорее. –
@ HansPassant Ваш хрустальный шар неправильный. AV не установлен, кроме Windows Defender. – awj