Ich habe nun eine Antwort von dem
API Lieferanten.
Alle Eventhandler und Callbacks werden dort synchronisiert aufgerufen. Die
API ist also threadsicher.
Bleibt nur noch die Frage wie Delphi arbeitet ...
IMHO können alle Events nur rein seriell abgearbeitet werden, da alle Events im HauptThread meiner Applikation behandelt werden.
Das Ablaufschema sollte also immer so aussehen:
Delphi-Quellcode:
> OnIrgendEinEvent Start
>> EineSubProcedure 1
>> EineSubProcedure 2
>> EineSubProcedure 3
> OnIrgendEinEvent Ende
> OnIrgendEinEvent Start
>> EineSubProcedure 1
>> EineSubProcedure 2
>> EineSubProcedure 3
> OnIrgendEinEvent Ende
> OnIrgendEinEvent Start
>> EineSubProcedure 1
>> EineSubProcedure 2
>> EineSubProcedure 3
> OnIrgendEinEvent Ende
und nie so:
Delphi-Quellcode:
> OnIrgendEinEvent Start
>> EineSubProcedure 1
>> EineSubProcedure 2
> OnIrgendEinEvent Start
>> EineSubProcedure 3
>> EineSubProcedure 1
>> EineSubProcedure 2
> OnIrgendEinEvent Ende
>> EineSubProcedure 2
>> EineSubProcedure 3
> OnIrgendEinEvent Ende
Fakt ist, dass ich die Eventbehandlungen so schlank wie möglich halten muss, damit ich mich auf den Status der Callhandler verlassen kann. Für länger laufende Prozeduren werde ich besser an Alzaimars Workerthread bemühen ...
Danke.
Schöne Grüße,
Jens