1.有问题:
例如Nt Server4上我创建了Apartment 的AutomationObject为a,有一个接口为Ia,
客户端也在这台NT Server4上,客户端这样写对不对:
var aa:Ia;
begin
CoInitializeEx(Nil,COINIT_MULTITHREADED);
Status := CoCreateInstance(IID_I{或CLASS_a}, nil, CLSCTX_LOCAL_SERVER, IUnknown, Result);
//CoCreateInstance调用成功,Result有值
aa:=Coa.Create;
aa.test;
{test方法中做Sleep(10000);}
CoUnInitialize;
//但这样调用后,一个客户端必须等上一个客户端调用完test方法后才能调用test方法,并不能实现并发,为什么?
//如果谁有成功的例子,能否发一个给我?谢谢!
2.a是由如下语句创建的:
TAutoObjectFactory.Create(ComServer, Ta, Class_a,
ciMultiInstance, tmApartment);
而TAutoObjectFactory由ComObj.pas定义,ComObj.pas中并没有对Apartment 的
AutomationObject做CoMarshalInterThreadInterfaceInStream,因此我觉得Apartment
的AutomationObject根本不可能支持两个客户端并发调用,大家认为呢?