调试输出 window 一遍又一遍地显示 "Starting Thread" 和 "Stopping Thread"

Debug Output window shows "Starting Thread" and "Stopping Thread" over and over

我使用 Ryder IDE 框架将我们的应用程序从 Windows 上的 C# 转换为 Linux 上的 .Net Core 运行。

我们的应用程序使用了多个第三方框架,例如 ServiceStack、RabbitMqMailkit 库。

当我打开调试输出时 window 我看到系统以超过每秒 10 个的速率启动和停止线程。

Started Thread 18213
Exited Thread 18213
Started Thread 18214
Exited Thread 18214
Started Thread 18215
Exited Thread 18215
Started Thread 18216
Exited Thread 18216
Started Thread 18217
Exited Thread 18217
Started Thread 18218

因为有 100 个 类 我不知道从哪里开始查看以这个速度启动和停止线程的方法。

我怎样才能找到这个?

如有任何帮助,我们将不胜感激。

总体上欢迎使用线程池 .Net Core 和 async-await。

你这里有什么问题?

那些输出 Started ThreadExited Thread 不是您代码中的错误,而是 Asp.Net 核心框架

的设计

A thread pool is a pool of worker threads that is available on demand as needed. The code examples in this article show how to use the thread pool in .NET Core using C#.

遗憾的是,没有任何机制可以跟踪 .NET 应用程序中正在启动或停止线程的内容。如果您在调试器中检查线程,您可以看到线程的 call-stack,包括(在堆栈的底部)调用以启动线程工作的方法。这可能会给你一些关于线程应该做什么的信息。

现实情况是,如果不是您的代码,您可能无法了解这些线程的管理方式。您可能会看到 .NET 线程池的正常行为。除非您发现线程数量过多或线程转换率非常高的问题,否则最好不要拉这个线程。