c# - 为什么线程 2 不可用?
问题描述
在下面的小控制台应用程序中,我正在打印主线程 ID 和其他 5 个线程,它正在打印 1、3、4、5、6、7,但不是 2。线程 2 不可用以及如何生成这个数字?
static void Main(string[] args)
{
Console.WriteLine($"Thread {Thread.CurrentThread.ManagedThreadId}");
Enumerable.Range(0, 5).ToList().ForEach(f =>
{
new Thread(() =>
{
Console.WriteLine($"Thread {Thread.CurrentThread.ManagedThreadId}");
Thread.Sleep(1000);
}).Start();
});
Console.ReadLine();
}
线程 1 线程 3 线程 4 线程 5 线程 6 线程 7
解决方案
Id=2 的线程是垃圾收集器线程。您可以通过运行终结器来检查其 ID:
class Test
{
~Test()
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
}
}
static void Main(string[] args)
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
var test = new Test();
test = null;
GC.Collect();
}
印刷:
1
2
推荐阅读
- json - 如何将完整的 json 数据映射到我的代码中?现在我一次只能做一个条目
- java - 如何使用 Selenium RemoteWebDriver 设置 HTTP_PROXY?
- javascript - 如何检测由 Enter 按键触发的浏览器中的鼠标点击?
- angular - 使用 Ionic Angular 如何将值从服务传递到页面
- delphi - 构建带有误报的 exe 文件(Delphi)
- python-3.x - 如何用一张图像预测训练好的模型?
- excel - 如何验证 Twitter ID 的 URL 以了解其当前状态
- python - 为什么 kivy 在 Visual Studio 代码中不起作用?
- migrate - 在 .Net 5 中替代 ServiceHost
- javascript - 用 Python BeautifulSoup 解析 JS 变量和函数