首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在两个线程之间共享QAxObject?

在两个线程之间共享QAxObject?
EN

Stack Overflow用户
提问于 2013-04-10 19:49:30
回答 1查看 1.2K关注 0票数 0

假设一个对象A在线程中运行。它有一个指向QAxObject实例的指针和一个指向对象B的指针。对象B具有指向QAxObject的指针。

对象A创建一个线程,并在其中移动对象B。

代码语言:javascript
复制
#ifndef OBJECTA_H
#define OBJECTA_H

#include <QtCore/QObject>
#include <QtCore/QThread>
#include <QAxObject>

#include "ObjectB.h"

class ObjectA : public QObject
{
    Q_OBJECT
public:
    ObjectA(QObject *parent = 0) : QObject(parent)
    {
        thread = new QThread();
        activeX = new QAxObject();
        objectB = new ObjectB(activeX);
        objectB->moveToThread(thread);

        ObjectA::connect(objectB, SIGNAL(someSignal()), this, SLOT(someSlot()));

        thread->start();
    }

protected slots:
    void someSlot();

private:
    QThread *thread;
    QAxObject *activeX;
    ObjectB *objectB;
};

#endif // OBJECTA_H


#ifndef OBJECTB_H
#define OBJECTB_H

#include <QtCore/QObject>
#include <QAxObject>

class ObjectB : public QObject
{
    Q_OBJECT
public:
    ObjectB(QAxObject *axObject, QObject *parent = 0) : QObject(parent)
    {
        activeX = axObject;
    }

signals:
    void someSignal();

private:
    QAxObject *activeX;
};

#endif // OBJECTB_H

对象B是否能够使用与对象A共享的QAxObject?

我觉得这是不可能的。目前,我得到了这个错误:QAxBase: Error calling IDispatch member NewProject: Unknown error

线程A和线程B都不能使用QAxObject。

有什么关于这个的信息吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-10 22:54:26

这里有一个解释:Access a COM object from a 3rd party dll across threads

应使用:

代码语言:javascript
复制
CoInitialize(0);
CoInitializeEx(NULL, COINIT_MULTITHREADED);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15924998

复制
相关文章

相似问题

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