高手呀,,,,,在DLL中怎么不自动调用析构函数?

                            
   
      在DLL中怎么不自动调用析构函数?  
   
      如我的程序是这样写的:  
   
      untChargeForSrv  
   
      use   ...   ,   untChargeMsgServer;  
       
      ...  
   
      initialization  
   
      gCsForCall   :=   TCriticalSection.Create;  
   
   
      ChargeMsgServer   :=TChargeMsgServer.Create;  
   
      finalization  
   
          //ChargeMsgServer.Close;     //在这里调用   Close   会出错.   但结束DLL是不调用Destroy  
   
          FreeAndNil(gCsForCall);   //在这里执行Close也不运行  
   
      end.  
   
      untChargeMsgServer.pas   是一个类  
       
      ...  
   
      constructor   TChargeMsgServer.Create;  
      begin  
          ...  
      end;  
   
      destructor   TChargeMsgServer.Destroy;  
      begin  
          Close;  
          inherited;  
      end;      
   
      {结束Server}  
      procedure   TChargeMsgServer.Close();  
      var  
          i   :Integer;  
      begin  
          for   i:=Low(session)   to   High(session)   do  
          begin  
              if   session[i].CUsed   then  
              begin  
                  session[i].CSocket.SendText('ChargeCmd=[ServerClose]');  
              end;  
          end;  
          Sleep(100);  
          ServerSocket.Close;  
      end;  
   
 

查看回复