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
moelski

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

AW: Windows message queue - Limit erreicht?

  Alt 8. Dez 2010, 19:39
Moin !

Zitat:
zu der For-Schleife sag ich mal Aua
Is ja gut ...
Aber das ist im Moment das kleinste Problem.

Hast du nicht einen Tip wie ich die Daten vom Empfangsthread Resourcen schonender zum Mainthread bekomme ?
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.379 Beiträge
 
Delphi 12 Athens
 
#2

AW: Windows message queue - Limit erreicht?

  Alt 8. Dez 2010, 20:02
Du könntest ja auf eine andere/größere Queue/Liste ausweichen?

Delphi-Quellcode:
uses SyncObjs, Generics.Collections;

var
  QueueCS: TCriticalSection;
  Queue: TQueue<THIDFeedback>;


var
  Temp: THIDFeedback;
begin
  // hid-thread
  SetLength(Temp.Data, Received);
  MoveMemory(@Temp.Data[0], Buffer, Received);
  Temp.HidCount := HidCount;
  QueueCS.Enter;
  try
    Queue.Enqueue(Temp);
  finally
    QueueCS.Leave;
  end;


  // mainthread
  QueueCS.Enter;
  try
    Found := Queue.Count > 0;
    if Found then Temp := Queue.Dequeue;
  finally
    QueueCS.Leave;
  end;
  if Found then
  begin
    // temp auswerten
  end;
Statt Record, CS und gen. Queue könnte man auch TThreadList mit Objekten nutzen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
moelski

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

AW: Windows message queue - Limit erreicht?

  Alt 8. Dez 2010, 20: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
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 01:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz