Einzelnen Beitrag anzeigen

Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

COM-Objekte (TOleServer) in Thread-Kontext benutzten

  Alt 7. Sep 2009, 13:02
Hallo DPler,

mal wieder ein Problem bei dem ich nicht die richtigen Suchbegriffe zu finden scheine.

Die Vorraussetzung
Ein COM-Object sorgt für die Kommunikation zwischen einem USB-Device und der Software. Im Onlinemodus überträgt der Device an uns Daten mit ca. 5 Hz. Wir erhalten eine Methode ausgelößt OnData die uns darüber informiert, dass es wieder mal soweit ist, Daten zu lesen.

Das Problem
Ist der Main-Thread (Application) gerade mit anderen Dingen beschäftigt, bekommen wir die Daten nicht mehr. Dies tritt zwar erst ein, wenn wir länger als eine Sekunde nicht reagieren können, nichts desto trotz möchten wir diese Zeitspanne gerne erhöhen.

Problemlösungs-Ansatz
Threads
Die Allerweltslösung ist die Parallelität. Daher möchte ich gerne den COM-Server im Thread-Kontext laufen lassen. Nur wie stelle ich das an? Soweit ich gesehen habe werden unsere Events (darunter OnData) in InvokeEvent des OleServers ausgelöst.

Also:
1. Wie erstelle ich eine MessageLoop in einem Thread die ich dann einem OleServer "übergeben kann"
2. Wie übergebe bzw. sage ich dem COM-Server welche MessageLoop er verwenden soll / im welchem Kontext er läuft.

Oder geht sowas gar nicht?

THX, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat