Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-Jacob标题_Java_Multithreading_Jacob - Fatal编程技术网

Java-Jacob标题

Java-Jacob标题,java,multithreading,jacob,Java,Multithreading,Jacob,在我的网站上,有一个功能可以在机器上打开一个Excel文件,并通过Jacob库(Jacob-1.14.3)处理它 每次从新线程调用此代码时: //In a new thread everytime ActiveXComponent excelApp = null; try { info("Openning Excel application..", 1); ComThread.InitSTA(); //ComThread.InitMTA(); //ComTh

在我的网站上,有一个功能可以在机器上打开一个Excel文件,并通过Jacob库(Jacob-1.14.3)处理它

每次从新线程调用此代码时:

//In a new thread everytime
ActiveXComponent excelApp = null;
try {
    info("Openning Excel application..", 1);

    ComThread.InitSTA();
    //ComThread.InitMTA();  
    //ComThread.InitSTA(true);
    //ComThread.InitMTA(true);

    excelApp = new ActiveXComponent("Excel.Application");
    excelApp.setProperty("DisplayAlerts", false);
    excelApp.setProperty("Visible", false);


    [...]

catch (Exception e) {
    throw e;
} finally {
    if (excelApp != null) {
        info("Closing Excel app..", 1);
        excelApp.invoke("Quit");
        ComThread.Release();
        System.gc();
    }
}
一旦有超过1个线程处理Excel,我就会出现以下错误:

com.jacob.com.ComFailException:无法将名称映射到dispid:XXX

XXX代表我正在查找的任何属性(名称、工作簿、退出等)。运行1个线程时不会出现错误

在互联网上花了几个小时后,我只有一份我不理解的文档:

我尝试过ComThread.InitSTA/MTA函数,但似乎没有什么能解决问题


如何让多个Excel实例从不同的线程与我的应用程序通信?

可能会有所帮助。这个家伙有多个线程,与一个Excel实例对话。但是我有多个线程,每个线程对话框有一个Excel实例。当我有1个线程-1个Excel实例时,它可以正常工作。可能会有帮助。这家伙有多个线程与一个Excel实例对话。但是我有多个线程,每个线程对话框有一个Excel实例。当我有1个线程-1个Excel实例时,它可以正常工作。