Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi, MSXML und MultiThreading (https://www.delphipraxis.net/215432-delphi-msxml-und-multithreading.html)

Olli73 2. Jul 2024 13:21

Delphi, MSXML und MultiThreading
 
Hallo!

MSXML scheint in der "Standardversion" nicht multithreading-fähig zu sein. Microsoft selbst sagt: https://learn.microsoft.com/en-us/pr...65459(v=vs.85)

Diese Multithreading-Version wird aber in "Xml.Win.msxmldom.pas" in Delphi nicht verwendet. Ich wusste mir nicht besser zu helfen, als eine Kopie davon in mein Projekt einzubinden und die "FreeThreadedDOMDocument-Version" dort als Erstes aufzuführen:

Delphi-Quellcode:
class constructor TMSXMLDOMDocumentFactory.Create;
begin
  SetDOMDocumentCoClasses([CLASS_FreeThreadedDOMDocument60, CLASS_DOMDocument60, CLASS_DOMDocument40, CLASS_DOMDocument30, //OMO added "CLASS_FreeThreadedDOMDocument60" at first position to use multithreaded version
    CLASS_DOMDocument26, Winapi.msxml.CLASS_DOMDocument]);
  ...
Oder gibt es eine bessere Möglichkeit?

Der schöne Günther 2. Jul 2024 13:35

AW: Delphi, MSXML und MultiThreading
 
Was hast du konkret vor? Ich glaube, ich verstehe die Frage nicht so ganz, denn eigentlich hatte mir ein
Delphi-Quellcode:
CoInitialize(..)
immer gereicht:

https://stackoverflow.com/q/34337327

https://stackoverflow.com/q/42904464

https://www.delphipraxis.net/189531-...anwendung.html

Olli73 2. Jul 2024 13:41

AW: Delphi, MSXML und MultiThreading
 
Ich benutze MSXML in mehreren Threads gleichzeitig, natürlich immer ein eigenes Dokument pro Thread.

Was mich irritiert hat, ist dass MS ein spezielles "FreeThreaded..." hat. Da dachte ich, das braucht man für Multithreaded.

Und wenn es da tatsächlich Probleme gibt/gäbe, sind die ja nicht leicht zu finden...

jaenicke 2. Jul 2024 15:03

AW: Delphi, MSXML und MultiThreading
 
Das CoInitializeEx hat bei mir immer gereicht. Allerdings gibt es auch bessere Alternativen zu MSXML, mit denen einerseits die Geschwindigkeit extrem höher ist, mehrere Threads auch problemlos gehen, und andererseits auch keine COM Intialisierung usw. gebraucht wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz