首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF并发模型

WPF并发模型
EN

Stack Overflow用户
提问于 2013-05-26 08:18:06
回答 1查看 502关注 0票数 1

我正在开发一个使用PInvoke调用非托管C++动态链接库函数的C# WPF应用程序。WPF应用程序是使用Blend创建的。

非托管C++ DLL从PInvoke函数调用CoInitializeEx(NULL, COINIT_MULTITHREADED)。在这行代码中,我收到一条错误消息,显示为"COM library already initialized with incompatible concurrency model"

我假设WPF天生就是STAThread。我说的对吗?

我如何修复上面的错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-26 10:32:10

是,WPF UI线程会将COM单元状态初始化为单线程。如果它不是单线程单元,那么一大堆东西都会失败。

您需要启动一个新线程并调用您的C++动态链接库,并确保该线程的单元状态为多线程。可以使用Thread.SetApartmentState设置线程的单元状态,但默认情况下,所有新线程都是多线程的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16755106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档