Jump to content


Photo

UniGUI + COMConnection


  • Please log in to reply
3 replies to this topic

#1 byjk

byjk

    Newbie

  • Members
  • Pip
  • 2 posts

Posted 29 December 2015 - 01:26 PM

Можно ли как ни будь связать сервер uniGUI с com-объектом?

я попробовал создавать  com объект в TUniMainModule:

  TUniMainModule = class(TUniGUIMainModule)
    COMConnection: TDCOMConnection;
  private
     ComServer: OleVariant;
.....
 
procedure TUniMainModule.SomeInit;
begin
    CoInitialize(nil);
    COMConnection.Connected := true;
    ComServer := COMConnection.GetServer;
    ComServer.Somefunction()....
....
end;
    
При таком раскладе я ожидал что переменная ComServer будет содержать ссылку на com-объект и я смогу его вызывать при следующих вызовах, но это не так -  сам ком-объект сразу освобождается после обработки веб-запроса - почему? 
можно ли как либо хранить ссылки на ком-объекты в сессии?
 
 

  • 0

#2 rgreat

rgreat

    Advanced Member

  • uniGUI Subscriber
  • PipPipPipPip
  • 101 posts

Posted 30 December 2015 - 12:40 AM

Не, так с сом-ом не выйдет.
Для каждого эвента в unigui создается отдельный поток.
Причем одних и тех-же эвентов может одновременно в одной сессии выполняться несколько.
  • 0

#3 rgreat

rgreat

    Advanced Member

  • uniGUI Subscriber
  • PipPipPipPip
  • 101 posts

Posted 30 December 2015 - 12:42 AM

Сделай отдельный закольцованый thread а в нем уже com объект и общайся через этот thread.
Так com объект не сдохнет.
Только сделай все thread-safe через блокировку или очередь.
  • 0

#4 byjk

byjk

    Newbie

  • Members
  • Pip
  • 2 posts

Posted 30 December 2015 - 07:30 AM

Для каждого эвента в unigui создается отдельный поток.

Судя по всему в этом собака зарыта...

Спасибо


  • 0




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users