AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Datenaustausch zwischen Thread / Anwendung mit Messages
Thema durchsuchen
Ansicht
Themen-Optionen

Datenaustausch zwischen Thread / Anwendung mit Messages

Ein Thema von moelski · begonnen am 16. Sep 2009 · letzter Beitrag vom 16. Sep 2009
Antwort Antwort
moelski

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

Datenaustausch zwischen Thread / Anwendung mit Messages

  Alt 16. Sep 2009, 09: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
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Datenaustausch zwischen Thread / Anwendung mit Messages

  Alt 16. Sep 2009, 10:02
Schau dir mal die Message WM_COPYDATA an.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
moelski

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

Re: Datenaustausch zwischen Thread / Anwendung mit Messages

  Alt 16. Sep 2009, 10:04
Moin !

WM_COPYDATA ist mir bekannt. Würde es aber gerne auf meine Weise lösen und vor allem wissen ob das so korrekt ist.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Datenaustausch zwischen Thread / Anwendung mit Messages

  Alt 16. Sep 2009, 21:11
WM_COPYDATA brauchst du auch nur, wenn du zwischen Prozessen Daten austauschen willst. Ich habe mir deinen Code nicht angesehen, aber von der Beschreibung her scheint alles in Ordnung zu sein.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 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