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

[1025 byte] By [lxj_com2006-小帅] at [2008-1-9]
# 1
顶~~~
sdzbbz at 2007-10-19 > top of Msdn China Tech,Delphi,VCL组件开发及应用...