![]() |
Delphi, MSXML und MultiThreading
Hallo!
MSXML scheint in der "Standardversion" nicht multithreading-fähig zu sein. Microsoft selbst sagt: ![]() 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:
Oder gibt es eine bessere Möglichkeit?
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]); ... |
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:
immer gereicht:
CoInitialize(..)
![]() ![]() ![]() |
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... |
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