Einzelnen Beitrag anzeigen

moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

Datenaustausch zwischen Thread / Anwendung mit Messages

  Alt 16. Sep 2009, 08:58
Moins !

Ich hätte da mal ne Verständnisfrage zum Thema Datenaustauschen zwischen Thread / Mainthread (Anwendung). Dazu im Anhang mal eine kleine Demo (geschrieben in D2007).

So die Anwendung hat eine Unit für einen Thread und eben das normale Programm. Wenn man die Anwendung startet werden im Thread Execute zwei Messages mittels PostMessage an die Anwendung gesendet. Dazu wird für jedes PostMessage mittels NEW Platz geschaffen für einen Pointer. Diesen Pointer übergebe ich dann LPARAM um ihn im Hauptprogramm auszuwerten.

Im Hauptprogramm wird dann der Pointer mittels Dispose verworfen.

So nun zu meiner Verständnisfrage ...
Ich erzeuge ja quasi mit jedem Threadexecute einen neuen Pointer durch New. Und genau dieser Pointer wird ja übergeben und später auch mittels Dispose verworfen. Sehe ich das dann richtig das der Thread Daten senden kann so schnell er will (vorausgesetzt mal das Windows Messaging kommt mit)?
Ich habe deshalb im MessageHandler einfach mal ein Sleep(100) eingebaut. Mann kann dann im Memo sehen dass das zweite New im Thread Execute einen neuen Pointer bekommen hat. Ohne das Sleep geht scheinbar die Verarbeitung so schnell das ich immer den gleichen Pointer bekomme - was aber auch kein Problem darstellen sollte.

Was ich mit der Sache anfangen will ...
Mit dieser Mimik würde ich die Daten eines USB HID Gerätes abfragen wollen. Der Empfang läuft in einem eigenen Thread. Und irgendwie muss ich ja mal die Daten vom Thread in meine Anwendung zur Umrechnung schaufeln. Und bis jetzt scheint mir das eine brauchbare Sache - es sei denn ich übersehe hier irgendwas relevantes ...
Angehängte Dateien
Dateityp: zip custom_windows_messages_-_thread_handling_240.zip (6,6 KB, 24x aufgerufen)
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat