C#-关于线程和空闲时间的几个问题

标签 c# wpf multithreading

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

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

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

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

    <

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

最佳答案

  1. 如果调用 Thread.Sleep(),线程在休眠时不会使用任何 CPU 资源。 线程将进入空闲状态,应用可能由多个线程组成。

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

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

关于C#-关于线程和空闲时间的几个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6409677/

相关文章:

c# - 如何根据 gridview 中的列值制作组(部分)?

c# - Sharepoint 事件接​​收器安全异常

c# - 使用 DirectShow .NET 从 SampleGrabber 计算 FFT

WPF - 如果命令的 CanExecute 为 false,如何隐藏菜单项?

wpf - 将数据传递给 mvvm 用户控件

c# - 单体机器人 : Intermittent failure when reading a large json string from web service

python - 如何将线程局部变量与 ThreadPoolExecutor 一起使用?

c# - 从原始文件生成 C#,反之亦然,解释自定义选项

c# - 变量赋值和读取是原子操作吗?

c# - 更正字符串中的字符?