Einzelnen Beitrag anzeigen

Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Problem mit 2. Formular

  Alt 24. Jan 2006, 14:54
Was du als "Free" bezeichnest ist in .Net Dispose des IDisposable Patterns, welches sich um alles kümmert, was für die GC unsichtbar ist (zum Beispiel DCs, Fenster,...).
Alles was IDisposable implementiert ist also potenziell memleak gefährdet.

Wenn du ein Form normal aufrufst, wird mit Close gleich ein Dispose ausgeführt.
Bei ShowDialog passiert das nicht! Wäre ja auch schlimm wenn dir der Dialog zerstört werden würde bevor du sein Ergebnis abfragen kannst.
Für modale Dialoge würde das also so aussehen:
Delphi-Quellcode:
using dialog := new DeineDialogKlasse() do
  if dialog.ShowDialog() = DialogResult.OK then
    ...
Oder in D.Net:
Delphi-Quellcode:
var dialog : DeineDialogKlasse;
begin
  dialog := DeineDialogKlasse.Create();
  try
    if dialog.ShowDialog() = &DialogResult.OK then
      ...
  finally
    dialog.Dispose();
  end;
Dispose würde auch durch den Finalizer aufgerufen werden, aber Finalizer sind Handbremsen und gehören zu den Dingen, die Unwissende gerne zu der Litanei ".Net ist langsam" verleiten.

Zitat:
Leider kenne ich kein Tool (Win32 -> MemProof) das mir das anzeigen könnte.
Suche mal nach CLR Profiler im MSDN. Ist ein sehr gutes FreeWare Tool und zeigt dir Dinge an, von denen du in MemProof nur träumen konntest...
Robert Giesecke
  Mit Zitat antworten Zitat