Datasnap中的TDSServerModule是继承于TDataModule,TDSServerModule实例的Destory,没有做互斥
destructor TDSServerModuleBase.Destroy;
begin
//TDataModule
if OldCreateOrder then DoDestroy;
if Assigned(RemoveDataModule) then
RemoveDataModule(Self);
//TComponent
Destroying;
RemoveFreeNotifications;
DestroyComponents;
// TPersistent
RemoveFixups(Self);
//TProviderDataModule
CleanProviders;
end;
RemoveDataModule(Self);
对全局的Classes.RemoveDataModule的函数重新赋值自己写的RemoveDataModuleFix,并在函数内互斥
procedure TDataModuleFix.RemoveDataModuleFix(DataModule: TDataModule);
begin
GlobalNameSpace.BeginWrite;
try
g_SaveRemoveDataModule(DataModule);
finally
GlobalNameSpace.EndWrite;
end;
end;