我正在努力学习或整理我一直在拾起的点点滴滴,所以我有几个问题:
我有一个线程在执行其操作后休眠5个小时,现在当该线程休眠时,应用程序是否进入空闲状态?它是自动产生ie还是我必须调用thread.Yield()?
如果你有一个等待用户输入的wpf应用程序,它在等待时是否也进入空闲状态?让我们假设应用程序可能需要等待一整天才能被告知要做某事?它在等待时会做什么,它会不断消耗资源,或者只是自动地进入等待的空闲状态?
现在从问题2开始,如果wpf是wcf服务的自主机,wpf在开始托管后会做什么,它是否进入空闲状态?因此,从问题2开始,按钮将用于重置服务,wpf应用程序将执行什么操作(在按下按钮之前,如果相同,则不必重复2的答案)?
谢谢大家, 附: 对不起,如果为什么问题看起来像真正的考试:-S他们不是。刚完成考试,这就是我所看到的:-S
答案 0 :(得分:4)
如果您调用Thread.Sleep()
,则线程在休眠时不会使用任何CPU资源。 线程将进入空闲状态,应用程序可能包含多个线程。
操作系统保持“睡眠”状态,直到有消息准备就绪。在UI应用程序运行时对CPU没有影响(除非你在UI线程上使用定时器或其他东西),但当然它会继续使用内存。
该服务由另一个线程托管。在消息到达之前,该线程不会使用CPU资源。从C#看不到这个线程 - 但是如果你在应用程序运行时打开任务管理器(Ctrl-Alt-Del),你可以看到为你的应用程序运行的线程数量(你可能需要向它添加列)从任务管理器菜单栏)。另一个有趣的专栏是“CPU时间”,它告诉您应用程序对CPU的影响。