C# 程序永远不会完成使用任务

C# 程序永远不会完成使用任务,c#,task,C#,Task,我试图找到答案,但没有找到完全相同的情况。我想了解为什么这段代码不起作用 名称空间测试 { 类进程 { private bool Active=true; 公共任务初始化() { 任务t=新任务(()=>{ 这个。Start(); }); t、 Start(); 返回t; } 私有void Start() { 虽然(活跃); } 公共无效停止(对象发送器、控制台取消标记) { 主动=假; } } 班级计划 { 静态void Main(字符串[]参数) { 过程p=新过程(); Console.C

我试图找到答案,但没有找到完全相同的情况。我想了解为什么这段代码不起作用

名称空间测试
{
类进程
{
private bool Active=true;
公共任务初始化()
{
任务t=新任务(()=>{
这个。Start();
});
t、 Start();
返回t;
}
私有void Start()
{
虽然(活跃);
}
公共无效停止(对象发送器、控制台取消标记)
{
主动=假;
}
}
班级计划
{
静态void Main(字符串[]参数)
{
过程p=新过程();
Console.CancelKeyPress+=新的ConsoleCancelEventHandler(p.Stop);
任务t=p.Init();
t、 等待();
Console.WriteLine(“结束!”);
}
}
}
基本上,我有一个任务的无限循环。 停止循环的条件是点击Ctrl-C,这将调用一个将布尔值设置为false的方法

循环似乎停止了,但代码永远不会结束


请您解释一下我在这里做错了什么,以及如何使其工作?

您必须将CancelKeyPress事件的Cancel属性设置为True:

        public void Stop(object sender, ConsoleCancelEventArgs e)
        {
            e.Cancel = true;
            Active = false;
        }
您可以在

中查看有关CancelKeyPress事件的更多信息“似乎”是什么意思?您是否调试并看到它真的停止了?如果使用
t.Wait(10000),程序是否在10秒后打印“结束!”