我用这个简单的代码测试了不同的项目:( 2010 ,4.5.1)
bool a, b;
new Thread(() => { a = Thread.CurrentThread.IsThreadPoolThread; }).Start();
Task.Factory.StartNew(() => { b = Thread.CurrentThread.IsThreadPoolThread; });我想知道哪些项目使用线程池线程,哪些项目不使用:(作为默认值(!)没有LongOperation交换机的调用)
因此:
WPF

-不使用线程池线程。
控制台

-不使用线程池线程。
Winform

-不使用线程池线程。
Asp.net

-用于Task
这实际上是我最不愿意考虑的地方-- asp.net使用线程池线程来执行任务。(每个线程池线程对于服务其他请求都很重要)
问题
为什么在创建/运行新任务时只有asp.net使用线程池线程?(而且,Tp线程是宝贵的资源)
发布于 2014-06-23 13:29:50
它们都使用线程池线程,您没有等待足够长的时间来运行代码。您需要在线程版本上执行.Join(),在任务版本上执行.Wait(),以便在检查a和b的结果之前等待代码完成。
bool a, b;
new Thread(() => { a = Thread.CurrentThread.IsThreadPoolThread; }).Start().Join();
Task.Factory.StartNew(() => { b = Thread.CurrentThread.IsThreadPoolThread; }).Wait();https://stackoverflow.com/questions/24367093
复制相似问题