Yep.
You aggregrate it into your own com object that is to be stored in the application object. And then make all of your method calls/etc thread safe.
 
  TController = class(TASPMTSObject, IController)
  private
    FFreeThreadedMarshaler: IUnknown;
  public
    function ObjQueryInterface(const IID: TGUID; out Obj): HResult; override; stdcall;
    procedure AfterConstruction; override;
  end;
 
function TController.ObjQueryInterface(const IID: TGUID; out Obj): HResult;
begin
  if GetInterface(IID, Obj) then Result := S_OK
  else if IsEqualGUID( IID, IMarshal ) then Result := FFreeThreadedMarshaler.QueryInterface( IID, Obj )
  else Result := E_NOINTERFACE;
end;
procedure TController.AfterConstruction;
begin
  inherited;
  OleCheck( CoCreateFreeThreadedMarshaler( Self, FFreeThreadedMarshaler ));
end;
-----Original Message-----
From: Reginald Ebenezer [mailto:[EMAIL PROTECTED]]
Sent: Friday, 6 July 2001 5:29 p.m.
To: Multiple recipients of list delphi
Subject: [DUG]: CoCreateFreeThreadedMarshaler

Hi
  Has anyone of u used CoCreateFreeThreadedMarshaler  to access methods in a COM object(Asp object activex control). If so, a piece of that code will be a lot helpful.
Regds
Ebenezer

Reply via email to