GDI-Objekte lassen das Programm abstürzen

UliA

Grünschnabel
hi,

wir haben ein sehr großes Problem in unserem Warenwirtschaftssystem. Zunächst einmal erst die Vorinfos: Die Entwicklung unseres Programms begann vor über 10 Jahren mit VB. Noch ist die Mehrheit der der Module in VB geschrieben. Allerdings ersetzen und erweitern wir sukzessive unser Programm um VB.NET Komponenten. Momentan ist aber das Hauptprogramm in VB. Dieses wiederrum ruft dann die .NET Komponenten auf, welche darin gehostet werden.

Nun kämpfen wir mit einem Problem:
VB hat keine anständige Speicherverwaltung, sodass die GDI-Objekte, welche man sich beispielsweise im Task-Manager anzeigen lassen kann, sich während des Betriebs kontinuierlich erhöhen. Windows hat aber ein Limit bei 10.000 Objekten, sodass das Programm bei dieser Grenze immer abstürzt. Das macht sich vorwiegend bei unseren am Terminalserver arbeitenden Usern bemerkbar. Warum besonders bei denen, weiß ich auch nicht.

Jetzt die Frage: Wie können wir die entsprechenden GDI-Objekte der Module löschen, wenn diese geschlossen wurden? Bei den "normalen" Clients wird der Speicherbereich hingegen schneller wieder frei.
 
Wenn ich Dich richtig verstehe, willst Du Formen komplett aus dem Speicher entfernen.

Das geht dann zum Beispiel so:

Code:
     UnLoad Form1
     Set Form1 = Nothing
 
Hi,

also ich habe mit unserem VB Entwickler gesprochen und es hängt wohl mit alten Controls von Drittherstellern zusammen. Deren Ressourcen werden nicht mehr freigegeben. Danke für die Hilfe.
 
Zuletzt bearbeitet:
Wäre ja ganz interessant, welche Controls zu diesem Phänomen führen. Vielleicht hat jemand anders das Problem ja auch mal.
 
Zurück