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秒后打印“结束!”代码>?