【问题标题】:Why does my PC 'freeze' when the main UI thread freezes?当主 UI 线程冻结时,为什么我的 PC 会“冻结”?
【发布时间】:2013-07-08 23:43:16
【问题描述】:

我看过很多关于为什么不使用 Backgroundworkers 会导致 UI 冻结的帖子,我理解这一点。但是,当这种情况发生时,我怎么会无法移动光标几秒钟呢?我不确定线程​​是什么或它是如何工作的,但肯定一个线程的工作量不会影响另一个线程的响应能力。当然,Windows 7 光标不会在与我的程序(4237 或类似)相同的线程上运行。这是否有一个复杂、可行的原因,还是只是我的电脑崩溃了?

【问题讨论】:

    标签: c# windows multithreading user-interface


    【解决方案1】:

    进程是在 CPU 上执行的程序的一个实例(一个进程可能由一个或多个线程组成)。如果一个线程占用 CPU,那么其他进程将“饿死”。也就是说,它们不会被分配足够的 CPU 时间来完成。线程是一个有趣的话题。有关更多信息,请在维基百科中搜索:线程、进程、饥饿或死锁。如果您想了解更多信息,请阅读有关操作系统概念的书。我发现 Abraham Silberschatz 的操作系统概念特别有用(很容易以 pdf 格式提供)。

    【讨论】:

    • '我无法移动光标几秒钟' - 我不确定这是完整的故事,即使在单核处理器上,除非有多个正在运行的线程比 UI 线程更高的优先级,这不应该发生。 “几秒钟”是很长的时间。
    • @MartinJames 是的 - 我相信光标冻结与我的线程无关。当我在 Visual Studio 中调试时,它告诉我进程的编号约为 4000-6000([6480]Process: MyApplication.vshost.exe),我记得这不正常?
    猜你喜欢
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 2021-12-21
    • 2019-10-01
    相关资源
    最近更新 更多