我写了几个DLL,把他们装在一个服务程序里,当服务程序以库或单独的服务进程启动时,在应用程序中使用ReleaseDispatch和DetachDispatch有很大的差别,会造成访问系统内存错误,在任务管理器里面会看到有进程频繁的启动和停止。  能解释一下造成这种现象的原因吗,我在程序里使用CreateDispatch来使用服务程序的。

解决方案 »

  1.   

    一般 detach 是提供能外面显示 释放自己的有时候 接口相互调用, 只有外面显示调用 detach 才能最后释放组件
      

  2.   

    我的三个DLL没有相互调用,我后来建了三个服务程序,每个里放了一个DLL。有一个DLL里面有四个接口,我在客户程序里都是使用CreateDispatch来调用相应的接口的,然后用ReleaseDispatch来释放。另外两个DLL各有一个接口,同样如此使用,出现非法访问错误,后来改成DetachDispatch才通过。后来看了MSDN,也不是很明白,能再详细些解释一下吗?
      

  3.   

    区别大了,
    Detach只是分离出来.并没有Release()
      

  4.   

    我也很晕啊,原来都是用ReleaseDispatch, 有错误,在任务管理器里看到有进程频繁的创建和退出,后来把对两个只有一个接口的DLL的调用改为DetachDispacth,就好了,后来发现当服务进程以独立的进程时用DetachDispatch,而以库运行时就ReleaseDispatch,否则就出错,谁能解释一下原因呢?
      

  5.   

    there's no one else ?!