我有以下用DotNet 6编写的程序:
var cancellationTokenSource = new CancellationTokenSource();
Console.CancelKeyPress += (object? sender, ConsoleCancelEventArgs e) =>
{
cancellationTokenSource.Cancel();
};
await DoAsync(cancellationTokenSource.Token);
Console.WriteLine("Finished!");
async Task DoAsync(CancellationToken token)
{
while (!token.IsCancellationRequested)
{
Console.WriteLine("Test!");
await Task.Delay(1000);
}
}
当我按"Ctrl+C"时,程序退出,错误代码如下: "Program.exe exited with code -1073741510"."Finished!"永远不会被写到屏幕上.
我不知道到底发生了什么,但似乎cancellationTokenSource.Cancel()抛出了一个异常,程序结束时出现了错误.据我所知,当调用ancellationTokenSource.Cancel()时,cancellationTokenSource.Token.IsCancellationRequested被设置为True,不应该抛出异常.
应用程序结束时出现异常的原因是什么?当用户按下"Ctrl + C"时,我如何才能正常退出应用程序?
我用谷歌搜索了很多,但就是找不到答案.