调试输出 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、RabbitMq
和 Mailkit
库。
当我打开调试输出时 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 个 类 我不知道从哪里开始查看以这个速度启动和停止线程的方法。
我怎样才能找到这个?
是否有一种方法可以在线程池上重载,允许我们在这些线程启动和停止时设置断点。
我尝试启用 settings > Build, Execution > Debugger > Process exceptions outside of my code
我看到 RabbitMQ 库中抛出了很多异常,但我不知道如果这涉及线程循环问题。
我启用了 System.Treading.ThreadStartExcepton
但没有命中。
如有任何帮助,我们将不胜感激。
总体上欢迎使用线程池 .Net Core
和 async-await。
你这里有什么问题?
那些输出 Started Thread
和 Exited 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 线程池的正常行为。除非您发现线程数量过多或线程转换率非常高的问题,否则最好不要拉这个线程。
我使用 Ryder IDE 框架将我们的应用程序从 Windows 上的 C# 转换为 Linux 上的 .Net Core
运行。
我们的应用程序使用了多个第三方框架,例如 ServiceStack、RabbitMq
和 Mailkit
库。
当我打开调试输出时 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 个 类 我不知道从哪里开始查看以这个速度启动和停止线程的方法。
我怎样才能找到这个?
是否有一种方法可以在线程池上重载,允许我们在这些线程启动和停止时设置断点。
我尝试启用
settings > Build, Execution > Debugger > Process exceptions outside of my code
我看到 RabbitMQ 库中抛出了很多异常,但我不知道如果这涉及线程循环问题。我启用了
System.Treading.ThreadStartExcepton
但没有命中。
如有任何帮助,我们将不胜感激。
总体上欢迎使用线程池 .Net Core
和 async-await。
你这里有什么问题?
那些输出 Started Thread
和 Exited 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 线程池的正常行为。除非您发现线程数量过多或线程转换率非常高的问题,否则最好不要拉这个线程。