openframeworks,ofThread和ofxXmlSettings(奇怪的错误)

时间:2014-08-06 15:22:30

标签: c++ openframeworks

目前我有一个我无法理解的奇怪错误。

东西是: 我在类中创建了一个类似于

的线程的方法
    void loadDocument(){
            ActionThread* thread = new ActionThread(data, path);
            thread->start();
    }

然后在ActionThread.h中

    class ActionThread : public ofThread{

    public:
    bool toLoad;
    Data* data;
    string path;

    ActionThread(Data* data, string path){
            this->toLoad = true;
            this->data = data;
            this->path = path;
    }

    void start(){
            startThread(true, false);
    }

    void threadedFunction(){
            if(toLoad)
                    data->loadDocument(path);
            stopThread();
    }
    }

和Data.cpp

    void Data::loadDocument(string path){
            ofxXmlSettings xmlDocument;
            xmlDocument.load(path); <------------   
    }

所以,这就是代码的概念。问题是当我调用方法loadDocument两次时,第二个会在xmlDocument.load(path)处出现错误。 第二条路径可以是与第一条路径相同或不同的路径。 无论我为第二个选择哪条路径,它都会引发错误std::out_of_range at memory location。 没有线程,我的意思是在没有任何线程的情况下执行loadDocument,它可以工作,但我需要它们,因为有些负载需要一段时间。

这里的任何人都知道为什么会这样?顺便说一句,它在ofUtils.cpp中崩溃了

    string ofToDataPath(string path, bool makeAbsolute) 

检查时的方法

    if (defaultWorkingDirectory().toString() != getWorkingDir().toString())

0 个答案:

没有答案