一个可以被多个线程调用的DLL。。该DLL每次被调用都会创建一个或多个线程。现在不想DLL工作了,想释放DLL所有的资源和线程。并且关闭DLL。不知道这个问题怎么处理了。。

解决方案 »

  1.   

    什么意思?    DLL自己创建的线程和资源难道DLL不能释放
      

  2.   

    如果dll的某函数有创建线程,相应地需要某个函数来结束线程。
      

  3.   

    就在析构里面做啊
    把所有可能存活的线程的循环之类的退出
    等待线程退出
    delete所有的资源
      

  4.   

    dll 是谁申请谁释放
    呵呵
      

  5.   

    直接FreeLibrary,它加载的资源会被释放(要确保这些资源以后不再被使用),线程的话虽然是在DLL中创建的但不能随时释放,可以WaitForSingleObject或TerminateThread,最好是让线程自己退出
      

  6.   

    你可以在 DLL_THREAD_DETACH 或者 DLL_PROCESS_DETACH 里面做资源的释放!
      

  7.   

    继续补充下吧,我想在DLL里面回调主程序,free掉我当前的DLL,就是说我是在特定情况下才会去FREE我的DLL,但这样FREE的话,会出现访问内存错误(access violation)的问题;还有就是,我想在FREE掉我的DLL时,把我在DLL中创建的线程也全部TERMINAL掉,我用一个数组去记录每次创建的线程HANDLE,但这存在一个临界资源访问的问题,感觉也不是很好。。所以请教各位有什么高招,,,
      

  8.   

    难道这是传说中的dll木马???
      

  9.   


    都把DLL给FREE了,线程还能运行吗?肯定报access violation 错误啊这样的话根本没意义哦