首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#如何计算我的AppDomain中的托管线程数?

C#如何计算我的AppDomain中的托管线程数?
EN

Stack Overflow用户
提问于 2010-06-18 18:25:51
回答 2查看 2.3K关注 0票数 12

有没有办法知道我使用了多少托管线程(包括ThreadPool)?

当我通过GetProcess获得非托管线程的数量时,我得到了一个疯狂的数量(一开始是21)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-18 21:01:00

这不是它的工作方式。托管程序中的任何线程都可以执行托管代码,包括最初作为非托管线程启动的线程。大多数情况下,主线程和任何线程池线程都开始执行纯非托管代码。它通过Marshal.GetDelegateForFunctionPointer()提供的网关插入到托管代码中。

看到几十个(否则不活动的)线程并不少见。它们通常是线程池线程和由COM服务器启动的线程。.NET缺少在这些线程上使用Thread.ManagedThreadId所需的管道。这是有意的,逻辑.NET线程不必是物理操作系统线程。尽管当前使用的主机中没有不是这种情况的主机。

你将不得不避免问这个问题。

票数 3
EN

Stack Overflow用户

发布于 2010-06-21 15:03:53

我还没有检查是否可以使用调试接口,但由于VS在其调试器中显示托管线程,您也应该能够在您的调试器中获得它们。

在.NET中,编写调试器比您预期的要容易得多。实现调试器基本上包括实现ICorDebug接口。

下面是一个来自微软的示例:Managed Debugger Sample

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3068813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档