c# - 不同的应用程序和线程池线程(或没有)?

标签 c# asp.net .net task threadpool

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

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

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

所以:

WPF enter image description here

—不使用线程池线程。

控制台 enter image description here

—不使用线程池线程。

Winform enter image description here

—不使用线程池线程。

ASP.net

enter image description here

是否用于任务

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

问题

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

最佳答案

它们都使用线程池线程,您等待代码运行的时间不够长。您需要在线程版本上执行 .Join() ,并在任务版本上执行 .Wait() ,以等待代码完成,然后再检查结果ab

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

关于c# - 不同的应用程序和线程池线程(或没有)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24367093/

相关文章:

c# - 无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息。与实体数据源

c# - 邮件发件人不工作

c# - 从 WebForms 应用程序使用类库中的资源

c# - 服务器端 Javascript (aspx.cs) 属性。添加代码以更改标签的文本

C# 方法的作用

c# - 如何检查.NET中用CPLEX编码的模型是否是真实模型?

c# - 如何使用 .net 在亚马逊中使用 sales-partner-api 加密和上传数据

c# - 在 WPF 和 MVVM 中使用 DataGrid 绑定(bind)数据表

c# - 在 C# 中,如何验证网络计算机上的用户?

javascript - 在单个页面中管理多个 SignalR 连接