关于TScreen::TDataModule没有互斥,在Datasnap中引出的BUG

来源:互联网 发布:sai软件无毒下载 编辑:程序博客网 时间:2024/06/13 02:20

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;


	
				
		
原创粉丝点击