2011-06-20 13 views
3

我努力学习问题或放在一起的点点滴滴,我一直在回升,所以我就几个问题:C#-A夫妇涉及线程和空闲时间

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

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

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

谢谢大家, P.S. 对不起,为什么问题看起来像真正的考试: - 他们不是。刚刚结束的考试,这就是我所看到的:-S

回答

4
  1. 如果调用Thread.Sleep(),线程不会使用,而它的睡觉任何CPU资源。 线程将进入空闲状态,应用程序可能由多个线程组成。

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

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

+0

甜美的男人,谢谢解释很多谢谢:D – Heinrich