【问题标题】:C#-A couple of questions involving threads and idle timeC#-几个涉及线程和空闲时间的问题
【发布时间】:2011-06-20 18:35:45
【问题描述】:

我正在尝试学习或整理我一直在收集的零碎知识,所以我有几个问题:

  1. 我有一个线程在执行其操作后会休眠 5 小时,现在当该线程休眠时,应用程序是否会进入空闲状态?它会自动产生ie还是我必须调用thread.Yield()?

  2. 如果您有一个等待用户输入的 wpf 应用程序,它在等待时是否也会进入空闲状态?让我们假设应用程序可能需要等待一整天才能被告知做某事?它在等待时做了什么,它是继续消耗资源还是简单地自动进入等待的空闲状态?

  3. 现在从问题 2 开始,如果 wpf 是 wcf 服务的自主机,wpf 在开始托管后会做什么,它是否进入空闲状态?那么从问题 2 开始,按钮将用于重置服务,wpf 应用程序会做什么(在您按下按钮之前,如果它相同,您不必重复 2 的答案)?

    李>

谢谢大家, 附言 抱歉,为什么问题看起来像真正的考试:-S 他们不是。刚刚完成考试,这就是我所看到的:-S

【问题讨论】:

    标签: c# wpf multithreading


    【解决方案1】:
    1. 如果你调用Thread.Sleep(),线程在睡眠时不会使用任何CPU资源。 线程将进入空闲状态,应用程序可能由多个线程组成。

    2. 操作系统保持“睡眠”状态,直到有消息准备好。 UI 应用程序运行时对 CPU 没有影响(除非您在 UI 线程上使用计时器或其他东西),但它当然会继续使用内存。

    3. 服务由另一个线程托管。在消息到达之前,该线程不会使用 CPU 资源。此线程在 C# 中对您不可见 - 但如果您在应用程序运行时打开任务管理器 (Ctrl-Alt-Del),您可以看到为您的应用程序运行的线程数量(您可能需要向其中添加列从任务管理器菜单栏中)。另一个有趣的专栏是“CPU 时间”,它告诉您应用程序对 CPU 的影响。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-25
      • 1970-01-01
      • 1970-01-01
      • 2012-03-07
      • 2014-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多