Einzelnen Beitrag anzeigen

quantum

Registriert seit: 15. Apr 2006
Ort: Kassel
64 Beiträge
 
Delphi XE Professional
 
#6

Re: VST - GDI OutOfRessources Exception

  Alt 5. Feb 2009, 19:13
Solch eine Exception tritt auch auf, wenn du versuchst aus einem anderen Thread heraus zu zeichnen. Bzw wenn 2 verschiedene Threads versuchen auf den gleichen Canvas zuzugreifen. Benutzt du möglicherweise Threads?
Untersuche zb mal mit dem Process Explorer von SysInternals, ob es wirklich ein Leck der GDI-Handles ist.
Oder prüfe kontinuierlich mit folgendem Code:
Delphi-Quellcode:
var CurrentHandles: Cardinal;
CurrentHandles := GetGuiResources(GetCurrentProcess, GR_GDIOBJECTS);
Bei 10.000 Handles ist Ende-Gelände.

Deine Zeichenroutinen kannst du auch in folgenden Code wrappen, um das Thread-Problem zu vermeiden:
Delphi-Quellcode:
if TargetCanvas.TryLock then begin
  try

    ....

  finally
    TargetCanvas.Unlock;
  end;
end;
Hiermit kannst du prüfen, ob aus einem anderen Thread heraus gezeichnet wird:
Assert(GetCurrentThreadId = MainThreadId, 'Falscher Thread zum zeichnen!'); Ich nutze das VST für intensives Zeichnen (massenhaft GIF-Animationen), was wunderbar funktioniert. Ich glaube kaum, dass der Fehler im VST selbst zu suchen ist.
  Mit Zitat antworten Zitat