.NET混合开发中,WebView2的线程模型是如何设计的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3359个文字,预计阅读时间需要14分钟。
系列目录+【已更新最新开发文章,点击查看详情】+WebView2控件应用详解系列博客+.NET桌面程序集成Web网页开发的十种解决方案+.NET混合开发解决方案1+WebView2简介+.NET混合开发解决方案2
系列目录WebView2控件应用详解系列博客
.NET桌面程序集成Web网页开发的十种解决方案
.NET混合开发解决方案1 WebView2简介
.NET混合开发解决方案2 WebView2与Edge浏览器的区别
.NET混合开发解决方案3 WebView2的进程模型
WebView2控件基于组件对象模型(COM),必须在单线程单元(STA)线程上运行。
- WebView2必须在使用消息泵的UI线程上创建。所有回调都发生在该线程上,对WebView2的请求必须在该线程上完成。从另一个线程使用WebView2是不安全的。
- 唯一的例外是CoreWebView2WebResourceRequest的Content属性。内容属性流是从后台线程读取的。流应该是灵活的,或者应该从后台STA创建,以防止UI线程的性能下降。
- 对象属性是单线程的。例如,调用CoreWebView2CookieManager.CookiesAsync(null),从主线程以外的线程获取会成功(即返回cookie);但是在这样的调用之后尝试访问cookie的属性(例如c.Domain)将引发异常。
本文共计3359个文字,预计阅读时间需要14分钟。
系列目录+【已更新最新开发文章,点击查看详情】+WebView2控件应用详解系列博客+.NET桌面程序集成Web网页开发的十种解决方案+.NET混合开发解决方案1+WebView2简介+.NET混合开发解决方案2
系列目录WebView2控件应用详解系列博客
.NET桌面程序集成Web网页开发的十种解决方案
.NET混合开发解决方案1 WebView2简介
.NET混合开发解决方案2 WebView2与Edge浏览器的区别
.NET混合开发解决方案3 WebView2的进程模型
WebView2控件基于组件对象模型(COM),必须在单线程单元(STA)线程上运行。
- WebView2必须在使用消息泵的UI线程上创建。所有回调都发生在该线程上,对WebView2的请求必须在该线程上完成。从另一个线程使用WebView2是不安全的。
- 唯一的例外是CoreWebView2WebResourceRequest的Content属性。内容属性流是从后台线程读取的。流应该是灵活的,或者应该从后台STA创建,以防止UI线程的性能下降。
- 对象属性是单线程的。例如,调用CoreWebView2CookieManager.CookiesAsync(null),从主线程以外的线程获取会成功(即返回cookie);但是在这样的调用之后尝试访问cookie的属性(例如c.Domain)将引发异常。

