我在应用程序里调用DLL后,DLL要进行处理大量的数据处理,不晓得什么时候处理完,并且处理完后有很多数据要返回给应用程序,请问如何处理呢
有例子更好。

解决方案 »

  1.   

    1.APP调用DLL函数开始处理数据
    2.DLL向APP发送消息通知处理完毕
    3.APP调用DLL函数获取处理完的数据
      

  2.   

    DLL接口函数中增加一个回调函数参数,exe传入自己的回调函数,调用DLL接口函数后,DLL接口返回,同时开线程等执行数据处理,当处理完了,调用exe的回调函数
      

  3.   

    在DLL中定义extern函数,对函数的参数采用指针,在调用该函数的主程序中初始化这些指针参数,这样你要传递多少数据都行,另外,如果是频繁调用要采用静态连接。
      

  4.   

    dll处理完后给应该程序发自定义消息,然后创建内存映射文件来完成数据读取。不知道这样行不行。我以前用这种方法处理数据。
      

  5.   

    我有个方法,供参考:
       1 你在EXE中写一个处理数据的函数DealDataExe().
       2 在DLL中写一个数据处理函数DealDataDLL(*DealDataExe),它的参数DealDataExe是一个函数指针,该函数是EXE中的DealDataExe()函数。DealDataDLL处理完数据后调用 DealDataExe函数。
       3 你在EXE中调用  loadlibrary(), 调用getproAddress(),取得DealDataDLL地址,调用它并把DealDataExe()指针传进去。
        不过这样做的问题是,EXE必须得等到DealDataDLL执行完后才能做其它事情。所以这里最好另外开一个线程来调用 DealDataDLL.