W
wuyuede
Unregistered / Unconfirmed
GUEST, unregistred user!
我在动态链接库里写了一个 接口,要两个程序来调用,要求,只能生成一个对象,可是不知道为什么,每个程序在调用的时候都会创建一个对象。大概的代码如下:
IDemoIntef 是个接口,其中有所要用到的 函数
TDemoIntf = Class(TInterfacedObject, IDemoIntef);
//TDemoIntf 继承了接口的类
动态链接库中暴露的函数:GetHelloInit;
全局变量 : _IDemoIntef: IDemoIntef;
function GetHelloInit: IDemoIntef;
stdcall;
begin
try
if not Assigned(_IDemoIntef) then
begin
_IDemoIntef := Tdemointf.Create;
end;
finally
Result := _IDemoIntef;
end;
end;
在其他程序中调用这个函数来创建一个 对象用接口中的函数,但是 这些函数同一时刻只能有一个程序来调用,所以在创建时先 assigned 判断是否创建了对象。
现在的问题是,两个程序同时运行时,用assigned判断后 都是一个空,所以都会创建一个新的对象,不知道这是为什么
IDemoIntef 是个接口,其中有所要用到的 函数
TDemoIntf = Class(TInterfacedObject, IDemoIntef);
//TDemoIntf 继承了接口的类
动态链接库中暴露的函数:GetHelloInit;
全局变量 : _IDemoIntef: IDemoIntef;
function GetHelloInit: IDemoIntef;
stdcall;
begin
try
if not Assigned(_IDemoIntef) then
begin
_IDemoIntef := Tdemointf.Create;
end;
finally
Result := _IDemoIntef;
end;
end;
在其他程序中调用这个函数来创建一个 对象用接口中的函数,但是 这些函数同一时刻只能有一个程序来调用,所以在创建时先 assigned 判断是否创建了对象。
现在的问题是,两个程序同时运行时,用assigned判断后 都是一个空,所以都会创建一个新的对象,不知道这是为什么