高手呀,,,,,在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;

