UI线程和渲染线程有啥区别?

Posted

技术标签:

【中文标题】UI线程和渲染线程有啥区别?【英文标题】:What is the difference between UI thread and rendering thread?UI线程和渲染线程有什么区别? 【发布时间】:2021-05-23 02:59:06 【问题描述】:

Microsoft 文档声明如下

通常,WPF 应用程序从两个线程开始:一个用于处理呈现,另一个用于管理 UI。渲染线程有效地隐藏在后台运行,而 UI 线程 接收输入、处理事件、绘制屏幕 并运行应用程序代码。

引自:https://docs.microsoft.com/en-us/dotnet/desktop/wpf/advanced/threading-model

根据上面引用的官方文档,有2个线程:

    渲染线程,进行渲染 UI 线程,“绘制屏幕”?!

“绘制屏幕”是什么意思?是不是和其他线程做的“渲染”一模一样?

【问题讨论】:

docs.microsoft.com/en-us/troubleshoot/dotnet/framework/… 提供了相当丰富的信息 - 我认为 UI 线程告诉渲染线程要绘制什么,渲染线程将其转换为像素。 是的,似乎是这样。谢谢!您能否添加一个答案,以便我投票和接受? 我不想这样做,因为它基本上是一个仅链接的答案。我希望真正了解 WPF 的人可以准备添加具有真实经验的真实答案:) 【参考方案1】:

WPF 有两个主要组件:一个是从user32 与Windows 操作系统交互。另一个基于DirectX

UI Thread 
         -> Message Bumping Thread 
         -> thread processing user interaction / task queuing (on user32).

渲染线程 -> 像素处理 (DirectX)。

【讨论】:

以上是关于UI线程和渲染线程有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

这些在 UI 线程上运行代码的方法有啥区别?

iOS子线程操作UI

UI线程和工作者线程

当 SectionList/Flatlist 滚动/渲染项目时 UI 线程似乎被阻塞(React Native)

使用 DirectX11 更新非 UI 线程中的顶点缓冲区

为啥要在主线程操作UI