AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Thread Queue probleme

Ein Thema von EWeiss · begonnen am 1. Jun 2018 · letzter Beitrag vom 3. Jun 2018
Antwort Antwort
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Thread Queue probleme

  Alt 2. Jun 2018, 12:34
Ich hoffe einer dieser Links zeigt es Dir richtig an.
Unterschied TTread.Synchronize / TThread.Queue oder Delphi Queue and Synchronize
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Thread Queue probleme

  Alt 2. Jun 2018, 12:39
Ich weis was Queue and Synchronize ist das hatte ich bereits gepostet.
Siehe!

Queue >= PostMessage (Wenn ich nicht warte kommt der unten aufgeführte Fehler)
Synchronize >= SendMessage (Wenn ich warte kann ich keine UI mehr erstellen in welcher Form auch immer)

Im Grunde nichts anderes aber selbst wenn ich es weis behebt es nicht mein momentanes Problem
das ich nach dem Event nicht mehr auf TAudioVolume zugreifen kann ohne die besagte Fehlermeldung zu bekommen.
Zitat:
EInvalidPointer with message 'Invalid pointer operation'.
Also nochmal zur Verdeutlichung.

Ich kann User Interface erstellen wenn ich Queue verwende aber es wirft mir die Pointer durch die Gegend.
Das ist mein Problem!

Synchronize funktioniert nicht weil hier auf eine Rückgabe gewartet wird und das erstellen von User Interface unmöglich ist im Main Thread.

gruss

Geändert von EWeiss ( 2. Jun 2018 um 12:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: Thread Queue probleme

  Alt 2. Jun 2018, 13:07
Kannst du da denn nicht mal genauer reinsteppen mit dem Debugger und eine genaue Stelle nennen, an der es zum ersten Mal kracht nach dem Event? Btw.: Ich glaube du leakest den Speicher von vProcList , falls bFound = True .
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.719 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Thread Queue probleme

  Alt 2. Jun 2018, 13:13
Hast Du schon ermittelt, welche Speicherfreigabe die Exception auslöst? Wenn ja, mal im ensprechenden Destructor einen Breakpoint setzen und schauen, von wo und wie oft er aufgerufen wurde.
Thomas Mueller
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Thread Queue probleme

  Alt 2. Jun 2018, 13:57
Hast Du schon ermittelt, welche Speicherfreigabe die Exception auslöst? Wenn ja, mal im ensprechenden Destructor einen Breakpoint setzen und schauen, von wo und wie oft er aufgerufen wurde.
Keine Speicherfreigabe löst den Fehler aus.
Sondern der nächste darauffolgende zugriff auf TAudioVolume.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Thread Queue probleme

  Alt 2. Jun 2018, 18:14
Ich liege hundert pro eh falsch aber gesagt haben mag ichs mal.
Setze doch mal einen BP vor Zeile FOnSessionStateEvent(self, NewState); und stepp dich da mal rein ob das alles seine Richtigkeit hat. Noch kommt mir das Self komisch vor, aber ich kann mich, wie so oft bei Dir, total irren.

Und verträgt Result.IsSystemSoundsSession :-1; einen negativen Wert ?

Zitat:
tmpStr := ExtractFileExt(FAudioSessionInfo.DisplayName); \\ <<<<<<< Hier kracht es
existiert denn FAudioSessionInfo.DisplayName zu diesem Zeitpunkt?
Wegen Result.DisplayName := '';
Lass Dir doch an dieser Stelle ne MessageBox anzeigen was du da so für Daten im Speicher hast.
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 2. Jun 2018 um 18:27 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Thread Queue probleme

  Alt 2. Jun 2018, 20:41
bekomme es nicht geregelt. egal.
Habe noch andere Projekte.

gruss

Geändert von EWeiss ( 2. Jun 2018 um 23:43 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: Thread Queue probleme

  Alt 2. Jun 2018, 13:14
Ich glaube du leakest den Speicher von vProcList , falls bFound = True .
Auf jeden fall ist das so.

Beim beenden der Anwendung bekomme ich ein Speicherleck Meldung von der vProcList angezeigt.
Glaube aber das ist deshalb weil die Pointer verschoben werden wie oder wo auch immer.

Denn ich gebe die ja frei FreeAndNil(vProcList);
Aber es fruchtet nicht die Speicherlecks kommen trotzdem.

Zitat:
Kannst du da denn nicht mal genauer reinsteppen mit dem Debugger und eine genaue Stelle nennen, an der es zum ersten Mal kracht nach dem Event?
Es kracht sobald ich irgendwo wieder auf TAudioVolume zugreife.
Die Zeile ist diese aber die macht nichts besonderes was den Fehler auslösen könnte.

Delphi-Quellcode:
function TAudioVolume.AudioSessionInfo(SessionIndex: integer): TAudioSessionInfo;
var
  Lbl: TLabel;
  tmpStr: string;
  bNull: BOOL;
  i: integer;
begin
  Result.ActiveSession := '';
  Result.DisplayName := '';
  Result.StateSession := '';
  Result.IconPath := '';
  Result.SessionIdentifier := '';
  Result.ProcessID := '';
  Result.IsSystemSoundsSession := -1;
  Result.SessionGuid := StringToGUID('{00000000-0000-0000-0000-000000000000}');
  Result.Device := nil;
  Result.PID := 0;

  bNull := False;

  tmpStr := ExtractFileExt(FAudioSessionInfo.DisplayName); \\ <<<<<<< Hier kracht es
  if Length(tmpStr) > 1 then
    tmpStr := ChangeFileExt(FAudioSessionInfo.DisplayName, '')
  else
    tmpStr := FAudioSessionInfo.DisplayName;
Ok
FreeAndNil(vProcList); steht an falscher stelle muss eine Zeile tiefer. Danke.
Werde mal schauen ob das mein Problem behebt.

Die Leaks sind behoben aber das Problem bleibt bestehen.
Habe nur diese beiden. Siehe Anhang.


gruss

Geändert von EWeiss (11. Jul 2019 um 15:51 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.879 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Thread Queue probleme

  Alt 2. Jun 2018, 13:18
Zitat:
Denn ich gebe die ja frei FreeAndNil(vProcList);
Aber nur, wenn du den Prozess vorher nicht gefunden hast, sonst nicht.
Markus Kinzler
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: Thread Queue probleme

  Alt 2. Jun 2018, 13:23
Zitat:
Denn ich gebe die ja frei FreeAndNil(vProcList);
Aber nur, wenn du den Prozess vorher nicht gefunden hast, sonst nicht.
Richtig. .Danke!
Deshalb habe ich sie eine Zeile tiefer gesetzt Fehler ist behoben was die Leaks betrifft.
Die Pointer spielen aber immer noch verrückt.

Die anderen Speicherlecks.. siehe Shots.

gruss

Geändert von EWeiss (11. Jul 2019 um 15:51 Uhr)
  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 17:13 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