【问题标题】:What do the non-main threads do after I start a C# application?启动 C# 应用程序后,非主线程会做什么?
【发布时间】:2016-06-07 19:25:27
【问题描述】:

我有一个基本上只运行 Main 并退出的应用程序(控制台应用程序,Visual Studio 2015),但如果我在 main 中设置断点,并查看线程,我会看到以下内容:

我看到这些线程来自不同的进程,为什么显示它们而不显示其他线程?它们与我的 C# 程序有什么关系?在什么情况下了解这些线程的作用会很有用?

【问题讨论】:

  • 它是什么样的应用程序?控制台应用程序? Windows 窗体应用程序?
  • 可以在VS 2015的Profiler中查看线程活动。

标签: c# .net multithreading visual-studio


【解决方案1】:

所有 Windows 应用程序都有一个 WndProc 消息泵,供 Windows 操作系统与您的应用程序通信。此外,所有 .net 应用程序都至少有一个 GC Finalizer 线程来销毁您创建的所有类。 vsHost 是一个 VS.net 调试器主机,它封装了您的应用程序并处理调试和跟踪数据的 IO。

【讨论】:

  • 最后两个<No Name>线程很可能是程序启动时创建的线程池线程。
  • ID 为 0 的线程做了什么(或做了什么)?还有为什么没有 GC Finalizer 线程?
  • @ProgrammerAtWork 0 线程可以编译您的应用程序,或启动它。一个未命名的线程可以是终结器线程,另一个可以是 GC 线程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 2019-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多