【问题标题】:How many threads has simplest WPF application?最简单的 WPF 应用程序有多少线程?
【发布时间】:2017-09-18 11:40:24
【问题描述】:

最近我有一个工作面试,我被问到:

启动时有多少个线程有简单的 WPF 应用程序?

那么有多少线程可以直接从 Visual Studio 项目模板中获得最简单的应用程序? 我回答说有:

  1. 主线程和
  2. GC 线程。

所以我的答案是一开始有两个线程。这不是正确的答案。 直到现在我才发现还有 JIT 编译器线程,但没有找到任何可靠的参考。

有人可以在这件事上启发我吗?提前谢谢你。

【问题讨论】:

  • 我不明白为什么有人会问这个问题。对我来说,这听起来像是无用的琐事。 /咆哮
  • 我不知道这个问题的答案,也找不到任何答案。但请阅读this answer。这与您的问题无关,但值得了解。
  • 这听起来像是非技术人员提出的无意义的问题之一,用于测试技术人员以尝试淘汰那些有假简历的人。不要把它放在心上,因为他们可能只是在谷歌上搜索了 wpf 线程并记下了他们看到的任何数字,而实际上他们自己并不知道它是正确的
  • 这不是一个无意义的问题。假设您有一个错误,您在其中创建了许多不必要的线程。您需要一个基线开始,因此了解最基本的 WPF 应用程序使用多少线程是一个有用的信息。
  • 这是一个有效的问题。

标签: .net wpf


【解决方案1】:

您有一个主(调度程序)线程,您的自定义代码和任何输入事件处理程序默认在其上引发,还有一个隐藏的后台渲染线程来绘制屏幕。

这在 MSDN 上有记录:

线程模型: https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/threading-model

然后您还拥有 GC 线程和终结器线程以及 CLR 可能创建的任何其他内务处理线程。

所以默认情况下至少有 4 个托管线程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多