我正在尝试学习或整理我一直在收集的点点滴滴,所以我有几个问题:
我有一个线程在执行操作后休眠 5 小时,现在当该线程休眠时应用程序是否进入空闲状态?它会自动产生 ie 还是我必须调用 thread.Yield()?
如果您有一个等待用户输入的 wpf 应用程序,它在等待时是否也会进入空闲状态?让我们假设应用程序可能必须等待一整天才能被告知做某事?它在等待时会做什么?它会一直消耗资源,还是只是自动进入等待的空闲状态?
现在从问题 2 开始,如果 wpf 是 wcf 服务的自托管,wpf 在开始托管后会做什么,它会进入空闲状态吗?那么从问题 2 开始,按钮将用于重置服务,wpf 应用程序将做什么(在您按下按钮之前,如果相同,则不必重复 2 的答案)?
<
谢谢大家, 附言 抱歉,为什么问题看起来像真正的考试:-S 他们不是。刚刚完成考试,这就是我所看到的:-S
最佳答案
如果调用
Thread.Sleep()
,线程在休眠时不会使用任何 CPU 资源。 线程将进入空闲状态,应用可能由多个线程组成。操作系统让它保持“休眠”状态,直到有消息准备好。 UI 应用程序运行时对 CPU 没有影响(除非您在 UI 线程上使用计时器或其他东西),但是它当然会继续使用内存。
该服务由另一个线程托管。在消息到达之前,该线程不会使用 CPU 资源。该线程在 C# 中对您不可见 - 但如果您在应用程序运行时打开任务管理器 (Ctrl-Alt-Del),您可以看到为您的应用程序运行的线程数量(您可能必须向其中添加列从任务管理器菜单栏)。另一个有趣的列是“CPU 时间”,它告诉您应用程序对 CPU 的影响。
关于C#-关于线程和空闲时间的几个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6409677/