且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Windows 10 UWP开发:如何不让界面卡死

更新时间:2022-06-10 03:35:08

http://edi.wang/post/2016/2/18/windows-10-uwp-async-await-ui-thread

 

 

关于UI线程

 

这里我们需要一点关于 UI 线程模型的概念,简单的来讲就是,UI 线程是运行在一个无限循环中,并维护一个消息队列,每次循环的开头都会获取队列的第一个消息,例如鼠标的按下消息,然后将这些消息提供给最外层 UI 元素,然后通过一系列的路由事件,传递给每个与该消息相关的 UI 元素,然后就会出现所谓的 MouseButtonDown 事件,然后配合 MouseButtonUp 事件就能组合成 Button 的 Click 事件,然后 UI 线程进入下一个消息循环,再次获取新的输入信息。

 

http://blog.higan.me/dot-net-thread-dispatch-model-dispatcher/

 

 

UWP 应用的 UI 在单线程单元 (STA) 中运行

 

你需要使用 UI 线程进行几乎所有对 UI 线程的更改,包括创建 UI 类型以及访问其成员。无法从后台线程更新 UI,但可以使用 CoreDispatcher.RunAsync 向其发布消息从而使代码在该处运行。

 

注意  有一个例外是存在一个单独的呈现线程,该线程可以应用不会影响输入的处理方式或基本布局的 UI 更改。例如,许多不会影响布局的动画和过渡可以在此呈现线程上运行。