AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Windows message queue - Limit erreicht?
Thema durchsuchen
Ansicht
Themen-Optionen

Windows message queue - Limit erreicht?

Ein Thema von moelski · begonnen am 8. Dez 2010 · letzter Beitrag vom 8. Dez 2010
Antwort Antwort
Seite 2 von 3     12 3      
moelski

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

AW: Windows message queue - Limit erreicht?

  Alt 8. Dez 2010, 21:05
@himutsu:
Danke das werde ich doch glatt mal ausprobieren.

@Luckie:
Basilikum hats ja schon geschrieben. Ich übergebe ja einen Pointer mit PostMessage.
http://edn.embarcadero.com/article/22411
Da wird das übrigens auch so gemacht.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#12

AW: Windows message queue - Limit erreicht?

  Alt 8. Dez 2010, 21:11
OK, aber was passiert, wenn es dabei zu einem Fehler kommt? Dann hast du den Schlamassel.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
moelski

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

AW: Windows message queue - Limit erreicht?

  Alt 8. Dez 2010, 21:13
Zitat:
Schlamassel
Den habe ich gerade schon ohne Fehler

Drum versuche ich mich gerade an himutsu Vorschlag.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#14

AW: Windows message queue - Limit erreicht?

  Alt 8. Dez 2010, 21:14
Da hab ich grad noch was gefunden
http://www.delphipraxis.net/142681-generics-stack.html
$2B or not $2B
  Mit Zitat antworten Zitat
moelski

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

AW: Windows message queue - Limit erreicht?

  Alt 8. Dez 2010, 21:32
Moin himitsu

Zitat:
Dank der Generics kann man ihn in allen möglichen Formaten erstellen
und er ist auch noch threadsicher.
WOW !!

Ich bin echt beeindruckt. Das könnte doch schon mein Problem lösen

Eine Frage hät ich aber noch ...
Ich habe deinen Codeschnippsel von Post #9 mal in meine testanwendung eingepflanzt.
Das funktioniert soweit auch.
Nun stellt sich mir nur noch die Frage ... Wie gebe ich dem Hauptthread nun zu verstehen das er sich mal um Daten kümmern soll?

- Timer ? Unschön und sicher nicht der beste Weg.
- Windows Message ? Nur wann wird die abgefeuert (Ich muss ja sicherstellen das ich nach dem Empfang auch immer die ganze Queue leer "lese").
- ??
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#16

AW: Windows message queue - Limit erreicht?

  Alt 8. Dez 2010, 22:10
Mal ganz blöde gefrage: Wie kann es sein, dass die Message Queue voll läuft? :grubel: Der Main-Thread müsste ja quasi komplett still stehen, dass dieser die Nachrichten, die er bekommt, nicht abarbeitet. Oder kann es sein, dass zu viele Nachrichten kommen, was aber dann ziemlich krass wäre imho. Was passieren denn mit den Daten im Thread? Kann man diese nicht evtl. auch dort verarbeiten? Klingt für mich irgendwie nach einem Problem im Konzept selbst.

Zum Thema Benachrichtigung: Nachdem das Thread-übergreifend ist, wären hier Nachrichten das passende Mittel. Von Timern (also Pollen) bin ich bei Gott nicht der Fan. Aber da gabs doch irgendeine Technik mit Signalen... Musst mal Luckies Thread mit Delphi anschauen.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)

Geändert von s.h.a.r.k ( 8. Dez 2010 um 22:13 Uhr)
  Mit Zitat antworten Zitat
moelski

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

AW: Windows message queue - Limit erreicht?

  Alt 8. Dez 2010, 22:14
Moin !

Zitat:
Klingt für mich irgendwie nach einem Problem im Konzept selbst.
Da gebe ich dir voll Recht.
Ist "historisch gewachsen" und nun gibs halt ein Problem ...

Parallel arbeiten wir eh an einer neuen Version die Solche Probleme behebt.

Aber irgendwie muss ich jetzt eben die alte Software noch "fixen".
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#18

AW: Windows message queue - Limit erreicht?

  Alt 8. Dez 2010, 22:19
Du brauchst quasi einen schnellen Fix Hm, Generics.Collections.TQueue hat OnNotify als Event. Allerdings weiß ich nicht, wie das läuft, wenn du diese Queue mit mehreren Threads befüllst -- also in welchem (Thread-)Kontext denn der Code der hinter dem Event steht dann ausgeführt wird. Ich denke mal fast, dass es denn der füllende Thread ist.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
moelski

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

AW: Windows message queue - Limit erreicht?

  Alt 8. Dez 2010, 22:24
Moin !

Zitat:
Du brauchst quasi einen schnellen Fix
Sir yes Sir

Zitat:
Generics.Collections.TQueue
Hmm, habe das gerade auf D2010 getestet ... Und auf 2007 (wo die alte Soft entwickelt ist) ... Da gibs noch keine Generics, oder?
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#20

AW: Windows message queue - Limit erreicht?

  Alt 8. Dez 2010, 23:04
Du könntest einfach einen Speicherbereich anfordern, für ein Array mit - sagen wir mal 10000 - Elementen. Wenn das voll ist, wird der Pointer auf das Array verschickt, ein neues Array angelegt und der Mainthread kümmert sich um die Freigabe des alten Speichers. Wär das nicht was?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 20:35 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