Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#21

AW: WebModule & ADOConnection in Service -> Speicherübrelauf

  Alt 16. Jan 2017, 18:21
Hmm..



CoInitialize(nil) und CoUninitialize dürfen nur einmalig aufgerufen werden. Nicht pro Verbindung und nicht pro Client und nicht pro Anfrage, sondern insgesamt nur einmal.
Nicht ganz richtig..

Lt.:

https://msdn.microsoft.com/de-de/lib...(v=vs.85).aspx

MUSS CoInitialize(nil) und CoUninitialize JE Thread aufgerufen werden wenn COM verwendet werden soll, was bei ADO nun mal so ist.

Wenn jede Anfrage über das WebModule in einem eigenen Sub-Thread ausgeführt wird, muss auch in der Execute des Threads CoInitialize(nil) und CoUninitialize aufgerufen werden.

Auch kannst Du mehrfach CoInitialize aufrufen, musst nur jeweils auch ein CoUninitialize dazu machen.

Ob es bei einer ISAPI-Dll anders ist, oder ob diese DLL immer nur aus einem Thread (MainThread) aufgerufen wird.. k.A.

Jedoch deuten die Fehlermeldungen von seinem ADO-Aufruf darauf hin, dass diese in einem eigenen Thread aufgerufen werden und somit expliziert CoInitialize brauchen.
Warscheinlich sind die ADOs eben nicht ThreadSave und somit eventuell von CoInitFlags := COINIT_MULTITHREADED ausgenommen..
  Mit Zitat antworten Zitat