在单独的线程上运行wxWidget的常用对话框时是否有任何对象?我正在开发一个浏览器插件,所以我需要在主浏览器线程之外放置冗长的操作。
我做了一个小测试,似乎有效,但会出现警告:
.... \ src \ msw \ dirdlg.cpp(333):'CoCreateInstance(CLSID_FileOpenDialog)'失败,错误0x800401f0(尚未调用coInitialize。)。
这是否意味着我必须调用wxApp :: Initialize(...)或其他一些函数?
谢谢, 基督教
答案 0 :(得分:1)
您只需要在CoInitialize()中使用COM调用each thread。因此,在创建公共对话框对象之前,只需调用CoInitialize()(每个线程一个)并在线程调用CoUninitialize()结束时调用。
对于主线程,wxWidgets在内部执行此操作。对于其他线程,您需要手动调用这些函数。它通常与GUI无关,但与wxWidgets内部使用的COM对象有关。
答案 1 :(得分:1)
是的,有'异议'
多线程应用程序的重要说明
编写多线程应用程序时,强烈建议使用 没有辅助线程调用GUI函数。