System.ObjectDisposedException ! Warum?



  • Hallo Leute,

    ich schreibe grad in C# ein Programm, wo auch DirectX verwendet wird.
    Wenn ich das PRG starte läuft es, aber wenn ich es schließe, wirft er diese verdammte: System.ObjectDisposedException !

    Mir ist noch schleierhaft warum, kann mir jemand helfen ?

    Gruß



  • hm...
    Lass mich raten. Du renderst die Grafik in einer Endlosschleife in
    einem Extrathread. Wenn das Game beendet wird, rufst du irgendwo eine
    Dispose-Methode des Deviceobjektes auf. Im anderen Thread weiss aber
    niemand was davon, weshalb er fröhlich weiter läuft und auf das Objekt
    zugreifen will. Da dieses Objekt aber schon Teilweise zerstört wurde,
    wird eine Exception geworfen.

    mfg BlueShift



  • Hallo BlueShift,

    teilweise liegst Du richtig mit Deinem raten. Ich rendere tatsächlich in einer Endlosschleife, aber nicht in einem extra Thread:

    while(Created){
    Render();
    Application.DoEvents();
    }

    Wenn ich diesen Teil auskommentiere, bleibt die Exception erstaunlicherweise weg,
    hab dann aber natürlich keine Grafik mehr.

    Nun frag ich mich, wie? oder wo? setz ich den bool 'Created' auf false!
    Oder wie umgeh ich das Problem ?

    Hast Du weitere Ideen ?

    Vorab hab Dank !

    PS: Und eine Disposed- Method hab ich nich drin.



  • Also, dank Deines Tips hab ichs zum laufen bekommen!

    Lösung:
    Statt im Konstruktor:

    while(Created){
    Render();
    Application.DoEvents();
    }

    Muß ins Main():

    Font3d app = new Font3d();
    while(app.Created){
    app.Render();
    Application.DoEvents();
    }

    Frohes schaffen.... 🙂


Anmelden zum Antworten