1. Task是在线程池中的线程上执行的(线程池所有线程都是后台线程)
2. Console的启动线程默认是主线程(前台线程)
3. 在控制台中启动线程结束,你手动创建的t1是前台线程,会阻止进程结束
4. t1执行结束后, 没有前台线程了, 整个进程结束, 所以task2方法没有执行完毕(不是没有执行)
1. asp.net core的所有处理请求的线程都是线程池线程
2. 整个asp.net core core的runtime(也就是Main方法所在的线程是一直运行着, 只有停止整个站点才停止)
3. 线程池线程在前台线程(即启动整个应用的Main线程)没有全部结束,而自身又没有抛出异常, 所以task1和task2方法都会正常执行到结束
综上所述: 你对.NET的线程理解存在盲点(CLR Via C#值得一看, CLR via C#:3rd
谢啦
books.douban.com/subject/4112979
学习了,一楼有道理。