Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi (Berlin) Multithreading mit SOAP (https://www.delphipraxis.net/189595-berlin-multithreading-mit-soap.html)

Sherlock 28. Jun 2016 13:10

Delphi-Version: 10 Seattle

(Berlin) Multithreading mit SOAP
 
Ich möchte mit einem SOAP-Client mehrere Server "abklappern", nacheinander ist das freilich möglich, parallel führt das zu folgendem Fehler
Zitat:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt EasyDEvice.exe ist eine Exception der Klasse DOMException mit der Meldung 'Microsoft MSXML ist nicht installiert' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
Google sagt, klar, das geht nicht weil die SOAP Implementierung nicht threadsicher ist, man kann das aber beheben, indem man für jeden Thread CoInitialize mit abschließendem CoUninitilize aufruft. Das mag unter Windows noch angehen, aber MacOS, iOS oder gar Android kennen ActiveX maximal vom Hörensagen? Was kann man da machen?

Sherlock

Sherlock 28. Jun 2016 13:45

AW: (Berlin) Multithreading mit SOAP
 
Scheint so als hätte ich mir ganz Umsonst Sorgen gemacht. Wie hat meine selige Oma immer schon gesagt: Probieren geht über studieren. Ich hab CoInitialize und CoUnititialize einfach in IFDEF WINDOWS gepackt ebenso wie das uses ActiveX und schon klappte es auch unter MacOS wie gewünscht.

Erstaunlich, wie gut die Multiplattformunterstützung ist... irgendwie besser als das "native" Windows.

Sherlock

himitsu 28. Jun 2016 14:48

AW: (Berlin) Multithreading mit SOAP
 
Nun ja, im Grunde war der Fehler ja, dass "Microsoft MSXML" für diesen Thread nicht installiert initialisiert war.
(Microsoft Microsoft Extensible Markup Language Document Object Model :stupid:)

Und in den anderen OS wird mit dei deren XML-DOM halt anders umgegangen.

Sherlock 28. Jun 2016 14:59

AW: (Berlin) Multithreading mit SOAP
 
Das ist mir klar. Ich finds halt Klasse, daß für die anderen OS dieser Teil wirklich gut funktioniert - auch bei Multithreading.

Sherlock

himitsu 28. Jun 2016 15:20

AW: (Berlin) Multithreading mit SOAP
 
Bei MS ist das XMLDOM halt nicht Multithread, es verwaltet auch nicht selber die Threads (sich selber intitialisieren, wenn wo benötigt und wieder beenden, wenn keine Referenz mehr, oder so)

Da muß man halt selber die Umgebung pro Thread initialisieren.

Wenn du ganz hart drauf bist und das nie wieder vergessen willst, dann kannst du unter Windows auch das Erstellen/Beenden von Threads hooken und dort "automatisch" CoInitialize und CoUnititialize aufrufen. :stupid:
Braucht dann zwar bissl mehr RAM und klein bissl Zeit für CoInitialize/CoUnititialize, auch da, wo es nicht nötig wäre, aber davon haben wir ja eh genug.

Sherlock 28. Jun 2016 15:35

AW: (Berlin) Multithreading mit SOAP
 
Ich will so wenig wie möglich selber machen, darum entwickle ich ja nicht mit Assembler. :stupid: Ich weiss darum auch zugegebenermaßen nicht allzuviel von den Interna, aber das hat mich bisher nicht davon abgehalten gute Software abzuliefern. 8-)

Sherlock


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:31 Uhr.

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