Announcement

Collapse
No announcement yet.

ApplicationContext referenziert disposed Form

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ApplicationContext referenziert disposed Form

    Hallo,

    Ich habe in meinem Programm ein "Splash" Fenster (von System.Windows.Forms.Form abgeleitet) mittels ApplicationContect Klasse gestartet:
    Code:
        AppContext = new ApplicationContext(_splash);
        Application.Run(AppContext);
    Ist die Initialisierung beendet, wird meiner ApplicationContext Instanz eine neue "MainForm" übergeben:
    Code:
        AppContext.MainForm = _mainwindow;
        _mainwindow.Show();
    Danach wird das Splash Fenster geschlossen:
    Code:
        _splash.Close();
        _splash = null;
    Mithilfe des Programs http://memprofiler.com/ habe ich herausgefunden, daß die AppContext instance über die "Application.ThreadContext.RunMessageLoopInner " Methode, eine referenz auf _splash besitz.
    Somit kann der GC den Speicherplatz nicht freimachen.

    Würde mich über jede Hilfe freuen!

    Danke

    Martin
    Attached Files
    Grüße,

    Martin

  • #2
    Hallo Martin#,

    schreibe Dir eine neue Klasse "MyAppContext" und erbe von ApplicationContext. Im Constructor lässt Du nun den Splash anzeigen mittels "Show();". Show ist asymetrisch, so dass Du danach direkt Deine Initialisierungen vornehmen kannst.

    Nachdem die Initialisierungen abgeschlossen sind, wirst Du mittels "_splash.Close();" und "_splash.Dispose()" Deinen Splash-Screen schließen. Zu guter letzt wirst Du nun Deine Main-Form mittels "ShowDialog()" aufrufen.

    Die MessageLoop wird nun so lange am Leben gehalten, bis die Main-Form zugemacht wird.

    Das sollte alles sein, was vonnöten ist. Das (entschuldige) Gefrickel, einen Context in einen neuen Loop zu übergeben ist hier denke ich der falsche Ansatz. EDIT: Sorry falschrum gelesen, eine neue Form wird in denselben Context übergeben, ist aber mit meinem beschriebenen Ansatz auch nicht mehr notwendig, und Fehlerfreier.

    Grüße
    _ntr_

    Comment


    • #3
      Hallo _ntr_,

      Habe so was schon versucht und auch ein sehr gut gemachtes project downgeloaded http://www.codeproject.com/csharp/ap...textsplash.asp.
      Leider konnte auch hier im memprofiler die referenz zu ApplicationContext nicht gelöst werden.

      Danke für deine Zeit und für mögliche weitere Hilfe!

      Martin
      Grüße,

      Martin

      Comment

      Working...
      X