Ich habe eine .NET-Konsolenanwendung (in C#) auf v4.5.1 geschrieben. Meine Main
Methode sieht wie folgt aus:Verwenden des CancelKeyPress-Ereignisses in einer .NET-Konsolenanwendung
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);
}
Eine der möglichen Befehle (gehandhabt durch ProcessCommand
) ruft eine lang andauernde Prozess, Ich mag würde der Lage sein, mit STRG + C über den Console.CancelKeyPress
Delegierten abzubrechen.
Aber wenn ich das mache Visual Studio öffnet eine Registerkarte, die sagt "mscorlib.dll ist nicht geladen" und dann nichts - die Konsole bleibt offen, aber nicht reagiert.
Ich habe auch versucht, die App außerhalb von Debug ausführen, aber ich kann die ausführbare Datei nicht finden.
Sie müssen den Status des Cancel Tokens innerhalb der 'while' Schleife nach dem Ausbrechen überprüfen, wenn es gesetzt ist. – Sean
Crystal Ball sagt, dass Sie Avast verwenden. Deinstallieren Sie es so schnell wie möglich. –
@HansPassant Ihre Kristallkugel ist falsch. Es wurde kein AV installiert, außer dem Windows Defender. – awj