当前位置: 首页 > article >正文

UI线程用到COM只能选单线程模型

无论用不用UI库,哪怕是用Win32 API手搓UI,UI线程要用COM的话,必须初始化为单线程单元(STA),即CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);,不能用MULTITHREADTHREADED。

实际上,很多(WPF等)UI库若用多线程模型初始化COM,都会直接抛异常。经实测,纯Win32 API (注①)搞UI虽无明确要求,但若用多线程模型初始化COM,会抛一个WinRT Originate Error 0x80040155 (注②),小概率出现画UI画不上的问题(注③),改为单线程模型初始化COM则两问题一并解决。


注解:
① 实际上还用了DirectX,但应该和DX没啥关系,因为DX支持多线程。
② 我这个项目实际上并没有用WinRT,但还是报这个错。错误代码对应信息为“没有注册接口”。
③ 具体为啥画不上,我调试半天也没搞清楚。只知道这问题与上述WinRT Error有较高相关性,于是我转而用每次稳定出现的WinRT Error作为出问题的信号,调试发现这问题出在一切DX绘图工作顺利完成之后。由此猜测是Windows为了创建UI或干啥的自己调用了一些COM接口,这些COM只支持单线程模型。如有知明确原因的大佬,还望不吝赐教。


http://www.kler.cn/a/529333.html

相关文章:

  • 解决whisper 本地运行时GPU 利用率不高的问题
  • 《编写可读代码的艺术》读书笔记
  • 家居EDI:Hom Furniture EDI需求分析
  • Keepalived高可用集群企业应用实例二
  • 【算法设计与分析】实验8:分支限界—TSP问题
  • 如何使用tushare pro获取股票数据——附爬虫代码以及tushare积分获取方式
  • [CVPR 2024] AnyDoor: Zero-shot Object-level Image Customization
  • 17.2 图形绘制7
  • ES的机架感知-Rack Awareness
  • kimi,天工,gpt,deepseek效果对比
  • 【Arxiv 大模型最新进展】TOOLGEN:探索Agent工具调用新范式
  • python 从知网的期刊导航页面抓取与农业科技相关的数据
  • 网络测试工具
  • 前端学习-事件委托(三十)
  • 简单易懂的倒排索引详解
  • 仿真设计|基于51单片机的温湿度、一氧化碳、甲醛检测报警系统
  • AI 计算的未来:去中心化浪潮与全球竞争格局重塑
  • 迪杰斯特拉(Dijkstra)算法
  • “新月之智”智能战术头盔系统(CITHS)
  • 抖♬♬__ac_signature 算法逆向分析
  • mybatis辅助配置
  • 计算机组成原理——存储系统(一)
  • 42. PWM背光实验
  • HAL库W25Qxx系列芯片驱动
  • C++STL之stack和queue容器(详细+通俗易懂)
  • 课设:【ID0022】火车票售票管理系统(前端)