C# 不同的应用程序和线程池线程(是否)?

C# 不同的应用程序和线程池线程(是否)?,c#,asp.net,.net,task,threadpool,C#,Asp.net,.net,Task,Threadpool,我用这个简单的代码测试了不同的项目:(2010,4.5.1) 我想看看哪些项目使用threadpool线程,哪些项目不使用:(作为默认(!)调用,不使用LongOperation开关) 因此: WPF -不使用线程池线程 控制台 -不使用线程池线程 Winform -不使用线程池线程 Asp.net -是否用于任务 实际上,这是我最后一次想到的地方——asp.net使用线程池线程执行任务。(每个线程池线程对于服务其他请求都很重要) 问题 为什么在创建/运行新任务时只有asp.net使用线

我用这个简单的代码测试了不同的项目:(2010,4.5.1)

我想看看哪些项目使用threadpool线程,哪些项目不使用:(作为默认(!)调用,不使用LongOperation开关)

因此:

WPF

-不使用线程池线程

控制台

-不使用线程池线程

Winform

-不使用线程池线程

Asp.net

-是否用于
任务

实际上,这是我最后一次想到的地方——asp.net使用线程池线程执行任务。(每个线程池线程对于服务其他请求都很重要)

问题


为什么在创建/运行新任务时只有asp.net使用线程池线程?(另外,由于Tp线程是宝贵的资源)

它们都使用线程池线程,因此您没有等待足够长的时间让代码运行。在检查
a
b
的结果之前,您需要在线程版本上执行
.Join()
,在任务版本上执行
.Wait()
以等待代码完成

bool a, b;
new Thread(() => { a = Thread.CurrentThread.IsThreadPoolThread; }).Start().Join();
Task.Factory.StartNew(() => { b = Thread.CurrentThread.IsThreadPoolThread; }).Wait();

你是对的,现在我觉得自己真的很傻:-)(好吧,至少我被纠正了)(所有的结果都是一样的:-))奇怪,但是如果我逐行跟踪,它确实会更改正确的值-而像我一样放置断点-不会显示更改…顺便说一句-
新线程
没有使用线程池线程。和
bool a, b;
new Thread(() => { a = Thread.CurrentThread.IsThreadPoolThread; }).Start().Join();
Task.Factory.StartNew(() => { b = Thread.CurrentThread.IsThreadPoolThread; }).Wait();